• ベストアンサー

foeach

IDと名前とパスワードを入力したsample.csvがあり、 $shop = file('sample.csv'); として、foreachを利用して配列に入れたとします。 foreach($shop as $val){ list($li_id ,$li_name, $li_pass) = split("\t",$val); if($id == $li_id){ echo "a"; exit; }else{ echo"b"; exit; } } として、フォームから送られてきたIDと、 csvに入っているIDが一致したらaを表示、 一致しなければbを表示というように上記のプログラムを書きました。 しかし、csvファイルの一番上のIDでなければ、 すべてbが表示されてしまいます。 exit;をとると今度は、 「abb」や「bab」など、すべて表示されてしまいます。 どのようにすれば一致したらaを表示、しなければbを表示というようにできるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

ループの中でechoはないでしょう・・・ フラグをつかってみてはどうでしょう? (breakはしなくてもOK) $flg=false; foreach($shop as $val){ list($li_id ,$li_name, $li_pass) = split("\t",$val); if($id == $li_id){ $flg=true; break; } } if($flg) echo "a"; else echo "b";

hukazuo
質問者

お礼

ありがとうございました^^ フラグを使用するのですね。。。 確かにループの中でエコーしたらそうなりますよね。。。。

その他の回答 (2)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

回答してから気づきました foreach($shop as $val){ list($li_id ,$li_name, $li_pass) = split("\t",$val); if($id == $li_id){ echo "a"; exit; } } echo"b"; exit; こういうことですね

hukazuo
質問者

お礼

ありがとうございました^^

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

>exit;をとると今度は、 >「abb」や「bab」など、すべて表示されてしまいます。 これがやりたいこと(一致したらaを表示、しなければbを表示)ではないのですか

関連するQ&A