【PHP】2重ループ(2重while)が動かない時の注意点

コーディングしていると、2重ループのスクリプトを書くケースが出てきます。

今回、このケースで少し躓いたので覚書しておきます。

結論を言うと、外側のループと内側のループでは、処理に違う変数を使うこと

当たり前のことですが、外側と内側で同じ変数を使うと2重ループとして処理されず、おかしな挙動になります。

ちなみに、この場合は、構文エラーではないので、エラーメッセージが出ず不具合の原因がわかりにくくなっています。

具体例を出すと下のような構文です。

while($row = mysql_fetch_assoc($res1)) {
    while($row = mysql_fetch_assoc($res2)){
     echo $row["sample"] ;
    }
}

外と内のループで同じ変数$rowで結果を受けています。

この場合には、二重ループとして処理されず、期待通りの結果になりません。

$row を、$row1$row2などと区別してやる必要があります。

先にも述べましたが、このケースでは、エラーが出ないので間違いが分かりにくくなっています。

単純なケアレスミスですが、一応、覚書しときます。

カテゴリー: PHP パーマリンク

コメントを残す

メールアドレスが公開されることはありません。