ここに私のコードです。なぜ私は無限ループにいるのか分かりません。 配列に対して一意のランダムな値を作るときに$ checkがループを止めなければならないと思います。PHPエンドレスループ、なぜですか?
<?php
$foo["blue"] = 0;
$foo["black"] = 0;
$foo["red"] = 0;
$foo["white"] = 0;
$check;
do
{
foreach($foo as &$val)
{
$val = rand(1,6);
}
$foo = array_unique($foo);
$check = count($foo);
}
while($check != 4);
echo '............................ <br>';
foreach($foo as $key=>$value)
{
echo $key . ' ' . $value . '<br>';
}
?>
'ますprint_r($ fooという)を入れてみてください;' '行う-while'をループ内の値であるかを確認します。 – Barmar
@isheggそれは大丈夫です、それはあなたが 'foreach'ループで現在の配列要素を更新する方法です。 – Barmar
'$ foo = array_unique($ foo)'です。最初の繰り返しの後に配列に重複した値があると、その行は '$ foo'を3つ以下の要素の配列にします。したがって、' $ check'は常に4と異なります。したがって、ループは無限になります。 ループが停止する唯一の方法は、最初の反復後に4つの異なるランダム値が得られる場合です。 –