我需要在刪除的數組中選擇一個蘭特值,并短接我用這個小代碼得出的數組,但它保持在無限循環中,但這是奇怪的外觀<?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 關注
- 118 瀏覽
添加回答
舉報
0/150
提交
取消