![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?e8efa67)
いつもここで勉強させていただいています。
初めて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ランキング
-
phpのheader("Location:#pos")...
-
PHPからCSVをアップロード後、m...
-
PHPで入力フォームでデータを確...
-
phpでcookieがうまく保存されない
-
フォームで戻った際に入力済み...
-
[php初心者]サイトを見てデータ...
-
PHP8を使うと、大量のWarningが...
-
ワードプレスサイト PHP8.0.25...
-
プログラミング言語で、使える...
-
phpのクラスメソッドの定義が長...
-
アマゾンのような評価の星を選...
-
ファイルアップロードに関して...
-
掲示板のセキュリティについて...
-
Q&Aサイトを作成していてURLの...
-
アップロード画像数でCSSを分け...
-
PHP一覧表示した項目にリンクを...
-
PHPのセッション有効期限について
-
php 確認表示画面で値をSESSION...
-
php 完了画面の送信メールのコ...
-
PHPで訪問回数を表示するカウン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA で、スペースを含むファイ...
-
ファイル名を変更してアップロ...
-
アップロードファイル名の文字化け
-
PHPからHTMLへの変数の受け...
-
プログラミングC++のmapについて
-
phpで変数を使ってcopyできない
-
Flaskでサーバー立ち上げに関して
-
SQLインジェンクション対策法を...
-
POSTの項目に追加
-
パラメータを2個つけたい
-
サブフォルダ内の全てのテキス...
-
フォームで送られてきたメール...
-
PHP FTPサーバへの画像アップロ...
-
連想配列を複数条件で比較して...
-
name属性が全角の場合・・・
-
if function PHP
-
マクロ(VBA)について
-
PDOのprepareでLIKEの部分一致...
-
画像をDBに登録できない
-
テキストボックスの値を取得したい
おすすめ情報