我需要在刪除的數(shù)組中選擇一個(gè)蘭特值,并短接我用這個(gè)小代碼得出的數(shù)組,但它保持在無(wú)限循環(huán)中,但這是奇怪的外觀<?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); } ?>那里的輸出每次都可能不同,就像這樣但永遠(yuǎn)不會(huì)結(jié)束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我必須打破它,但正如你所看到的,在第一個(gè)循環(huán)中,按預(yù)期工作刪除了數(shù)字 4,在第二個(gè)循環(huán)中刪除了數(shù)字 1,但沒有完成第三個(gè)循環(huán)我復(fù)習(xí)了很多遍,得出問題的結(jié)論就行了$array[$ia]=$array[$ian];如果我在這里添加一個(gè)回顯,它會(huì)打印一個(gè)數(shù)字到無(wú)窮大,為什么?$array[$ia]=$array[$ian];echo $array[$ia],"\n";
1 回答

呼啦一陣風(fēng)
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
問題不在一行。需要一些命令來(lái)進(jìn)行交互:
array_rand
返回元素的鍵而不是值array_search
如果未找到該值,則返回 (bool)false(因?yàn)?1 可能會(huì)發(fā)生這種情況)您用來(lái)
$array_value_key
啟動(dòng)一個(gè) for 循環(huán)。因?yàn)?2 它可能是 (bool)false。當(dāng)您遞增布爾值時(shí),它不會(huì)改變。即你
$ia++
什么也沒做。這就是為什么
$ia<=$array_key_last
永遠(yuǎn)不會(huì)變成假并且你的循環(huán)永遠(yuǎn)運(yùn)行的原因。
- 1 回答
- 0 關(guān)注
- 117 瀏覽
添加回答
舉報(bào)
0/150
提交
取消