![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?5a7ff87)
いつもここで勉強させていただいています。
初めてPHPプログラムを書くことになって本をみてここの
サンプルをみながらやっていく途中でどうしてもうまくいかないので皆さんの知恵をお借りしたいと思います。
<HTML>
<?php
//行番号表示
$leng = 0;
$file_name = "roba.csv";
//区切り記号
$kigou = ",";
//指定項目数
$count_koumoku = 20;
// 関数呼び出し
$e = koumokuCheck($file_name,$kigou,$count_koumoku);
print "--;>チェック終了";
function koumokuCheck($file_name,$kigou,$count_koumoku){
$file = fopen($file_name, "r");
while ($data = fgetcsv($file, 1000,$kigou)) {
//項目数カウントする
$num = count ($data);
if( $num != $count_koumoku) {
//項目数カウントする(指定項目数より小さい場合メッセージ表示)
$leng++;
print "-->$leng"."<--項目数が足りてません <br>\n";
} else {
$leng++;
}
}
flock($file,LOCK_UN);
fclose($file);
}
?>
</HTML>
上記のようなチェック機能をつくりましたが結果は一つの循環で結果(N行目が項目数が足りない)を返してくれますがここを配列を利用して項目数が足りない行番号を覚えさせて最後に足りない行番号を列挙して一つの行にまとめて表示したい(例:1,3,6,7,9の項目が足りません)と思っていますがなかなかうまくいきません!みなさんのよいアドバイスをまっています。
No.2ベストアンサー
- 回答日時:
エラーメッセージを変数に格納しておいて、後でまとめて出力すればよいと思います。
function koumokuCheck($file_name,$kigou,$count_koumoku){
$file = fopen($file_name, "r");
flock($file, LOCK_SH);
while ($data = fgetcsv($file, 1000,$kigou)) {
//項目数カウントする
$num = count ($data);
if( $num != $count_koumoku) {
//項目数カウントする(指定項目数より小さい場合メッセージ表示)
$leng++;
$error .= $leng.', ';
} else {
$leng++;
}
}
flock($file, LOCK_UN);
fclose($file);
echo $error.' の項目が足りません';// エラーメッセージ出力
}
# flock($file,LOCK_UN); はロックの開放が目的なので、予めロックしておかなければ無意味ですよ。
# 一応、共有ロックとして入れておきました。
PHP: 代入演算子 - Manual
http://jp2.php.net/manual/ja/language.operators. …
PHP: flock - Manual
http://jp2.php.net/manual/ja/function.flock.php
すみません!挨拶がおそくなりました。
こんなに詳しくまで教えていただいて
大変助かります。本当にありがとうございます。
いい勉強になりました。(^^)>お礼をもうしあげます。
No.1
- 回答日時:
<?php
$file_name = "roba.csv";
//区切り記号
$kigou = ",";
//指定項目数
$count_koumoku = 20;
// 関数呼び出し
$e = koumokuCheck($file_name,$kigou,$count_koumoku);
print "--;>チェック終了";
if ($err_leng != "") {
print $err_leng . "の項目数が足りません。";
}
function koumokuCheck($file_name,$kigou,$count_koumoku){
$leng = 1;
$err_leng = "";
$file = fopen($file_name, "r");
while ($data = fgetcsv($file, 1000,$kigou)) {
$num = count ($data);
if( $num != $count_koumoku) {
if ($err_leng != "") {
$err_leng .= ",";
}
$err_leng .= $leng;
}
$leng++;
}
?>
なるほど!これも一つの方法ですね!
皆さん、さすが強いですね!いつなら
私もこんなにすらすらと書けるレベルに
なれるかな(??);よい参考になりました。
ありがとうございます。
お礼をもうしあげます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHP ページング データベース 1 2022/06/16 10:30
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- PHP 画像が表示出来ません。 1 2023/02/02 16:30
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
if function PHP
-
アップロードファイル名の文字化け
-
name属性が全角の場合・・・
-
C# 同じ処理をまとめたい
-
プログラミングC++のmapについて
-
初心者です。入力フォームのp...
-
POSTの項目に追加
-
WordのIDataObject::GetData呼...
-
サブフォルダ内の全てのテキス...
-
PHPのエラー対処法を教えてくだ...
-
PHPとjavascriptの併用
-
$error["name"]["message"]の“...
-
functionとclassの使い分け
-
if文のなかで
-
Flaskでサーバー立ち上げに関して
-
VBA で、スペースを含むファイ...
-
formでのチェックボックスのnam...
-
PHPでURLにジャンプするには?
-
PHPで画像の渡しが上手く行きま...
-
DBの値をチェックボックスに反...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA で、スペースを含むファイ...
-
Flaskでサーバー立ち上げに関して
-
POSTの項目に追加
-
ファイル名を変更してアップロ...
-
PHPで入力フォームでデータを確...
-
PHP MySql 画像を取得
-
foreachがうまく動かない
-
PHPからHTMLへの変数の受け...
-
phpで変数を使ってcopyできない
-
サブフォルダ内の全てのテキス...
-
UPDATEできない
-
php+mysqlでの重複チェックにつ...
-
phpでショッピングカート機能を...
-
fputcsv()で1レコード1行になる...
-
配列の値
-
openCVのトラックバーについて
-
if文のなかで
-
sqlite文字列を格納、出力
-
$a = ( $b == $c ) ? $d、 この...
-
$_REQUESTの意味を教えて下さい
おすすめ情報