我需要在删除的数组中选择一个兰特值,并短接我用这个小代码得出的数组,但它保持在无限循环中,但这是奇怪的外观<?php$array=array("1","2","3","4","5","6","7","8","9","0");$count=count($array);for ($il=1;$il<=$count;$il++){$array_value=array_rand($array, 1); $array_value_key = array_search($array_value, $array);$array_key_last=array_key_last($array);for($if=0;$if<=$array_key_last;$if++){if ($if==$array_value_key){ for($ia=$array_value_key;$ia<=$array_key_last;$ia++){ if ($ia<$array_key_last){ $ian=$ia+1; $array[$ia]=$array[$ian]; }else{ unset($array[$ia]); } } } }print_r($array); } ?>那里的输出每次都可能不同,就像这样但永远不会结束Array( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 [5] => 7 [6] => 8 [7] => 9 [8] => 0)Array( [0] => 2 [1] => 3 [2] => 5 [3] => 6 [4] => 7 [5] => 8 [6] => 9 [7] => 0)^C我必须打破它,但正如你所看到的,在第一个循环中,按预期工作删除了数字 4,在第二个循环中删除了数字 1,但没有完成第三个循环我复习了很多遍,得出问题的结论就行了$array[$ia]=$array[$ian];如果我在这里添加一个回显,它会打印一个数字到无穷大,为什么?$array[$ia]=$array[$ian];echo $array[$ia],"\n";
1 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
问题不在一行。需要一些命令来进行交互:
array_rand
返回元素的键而不是值array_search
如果未找到该值,则返回 (bool)false(因为 1 可能会发生这种情况)您用来
$array_value_key
启动一个 for 循环。因为 2 它可能是 (bool)false。当您递增布尔值时,它不会改变。即你
$ia++
什么也没做。这就是为什么
$ia<=$array_key_last
永远不会变成假并且你的循环永远运行的原因。
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报
0/150
提交
取消