dポイントプレゼントキャンペーン実施中!

いつもここで勉強させていただいています。
初めて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の項目が足りません)と思っていますがなかなかうまくいきません!みなさんのよいアドバイスをまっています。

A 回答 (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
    • good
    • 0
この回答へのお礼

すみません!挨拶がおそくなりました。
こんなに詳しくまで教えていただいて
大変助かります。本当にありがとうございます。
いい勉強になりました。(^^)>お礼をもうしあげます。

お礼日時:2006/06/26 09:43

<?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++;
}
?>
    • good
    • 0
この回答へのお礼

なるほど!これも一つの方法ですね!
皆さん、さすが強いですね!いつなら
私もこんなにすらすらと書けるレベルに
なれるかな(??);よい参考になりました。
ありがとうございます。
お礼をもうしあげます。

お礼日時:2006/06/26 09:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!