【发布时间】:2017-09-29 06:12:14
【问题描述】:
这是我的代码。我不明白为什么我会陷入无限循环。 我认为当我为数组创建唯一的随机值时,$check 必须停止循环。
<?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);放入do-while循环以查看值是什么。 -
@ishegg 没关系,这就是在
foreach循环中更新当前数组元素的方式。 -
$foo = array_unique($foo)。如果在第一次迭代之后,数组有重复值,那么该行将使$foo成为一个包含三个或更少元素的数组,因此$check将始终不同于 4,因此循环将是无限的。循环停止的唯一方法是在第一次迭代后获得四个不同的随机值。