次のコードがあります。
while(1){
$r = rand(0,9);
echo "running...";
if($current_item >= $array[$r]['limiter']){
$foo = $foo;
$bar = $bar;
mysql_query("INSERT INTO db (type, hp) VALUES ('$foo', '$bar')");
echo "done.";
break 1;
}
}
これを実行すると"running..."
、予想どおり、1 回または数回 (予想どおり)"done."
エコー アウトされ、1 回エコー アウトされます。
それでも、if ステートメント全体が 2 回実行されたことを示唆する異なる情報を含む 2 つのエントリがデータベースに挿入されます。
誰もこれに遭遇したことがありますか?ここに表示されていない何かが起こっているのでしょうか? これを修正する方法はありますか?
Updates にも同様の問題があります。更新も 2 回行われ、ループから完全に切り離されています。
編集:明確にするために、
$current_item
変化しますが、ループのコンテキストでは一定です。$array[$r]['limiter']
多次元配列を参照します。これらのどちらもループ自体に影響を与えるべきではありません。これは、何かを行うために満たす必要がある単なる条件です。