- ベストアンサー
foreachで無限ループ?PHP配列ループ方法を教えてください
- PHPのforeach文を使用して配列をループしている際に、ifとelseを使用するとフリーズしてしまう問題が発生しています。
- 無限ループが発生しているのかどうかを確認していただきたいです。
- 解決方法を教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
どんなデータが入ってきてるのか どんな処理をしようとしてるのか 全く不明なので何とも言えませんが…。 以下のように単純化してデバッグされたらいかがでしょう 1.foreachだけ foreach ($lines as $line) { print "$line<br>"; } 2.foreachにlistを加えてみる foreach ($lines as $line) { print "$line<br>"; list($DATE,$ID,$POINT,$NAME,$EMAIL,$TEL,$PREF,$SEX,$AGE,$blood,$body,$length,$type,$why,$PASS,$PROF,$BOX,$DAY_LIMIT,$A_ID,$MILE_POINT,)= split(",",$line); print "$DATE<br>"; print "$ID<br>"; print "$POINT<br>"; ・・・以下略 } 3.foreach、listにifを加えてみる foreach ($lines as $line) { list($DATE,$ID,$POINT,$NAME,$EMAIL,$TEL,$PREF,$SEX,$AGE,$blood,$body,$length,$type,$why,$PASS,$PROF,$BOX,$DAY_LIMIT,$A_ID,$MILE_POINT,)= split(",",$line); if($EMAIL == $_POST{"EMAIL"} && $PASS == $_POST{"PASS"}){ print "$line<br>"; }else{ print "$line<br>"; } }
その他の回答 (1)
#1です。 不足部分を適当に付加して実行しましたが、私の環境では特に問題ありませんでした。 恐らくこれだけで完結したスクリプトではないと思いますが情報が足りないのでこれ以上は分かりません。 if~elseの問題ではなく何か別の原因のような気がします (例えば配列の件数が多すぎるとか…) お役に立てず申し訳ありません。
お礼
さっそくの返信ありがとうございます。 おっしゃるように1.2のように切り分けてみると問題ないのですが elseを使うとフリーズしてしまいます。