为什么这不起作用?Php 数组自动替换值和短数组

我需要在删除的数组中选择一个兰特值,并短接我用这个小代码得出的数组,但它保持在无限循环中,但这是奇怪的外观


<?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";


元芳怎么了
浏览 93回答 1
1回答

呼啦一阵风

问题不在一行。需要一些命令来进行交互:array_rand返回元素的键而不是值array_search如果未找到该值,则返回 (bool)false(因为 1 可能会发生这种情况)您用来$array_value_key启动一个 for 循环。因为 2 它可能是 (bool)false。当您递增布尔值时,它不会改变。即你$ia++什么也没做。这就是为什么$ia<=$array_key_last永远不会变成假并且你的循环永远运行的原因。
打开App,查看更多内容
随时随地看视频慕课网APP