为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
元芳怎么了 2023-08-19 17:32:53
我需要在删除的数组中选择一个兰特值,并短接我用这个小代码得出的数组,但它保持在无限循环中,但这是奇怪的外观<?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个赞

问题不在一行。需要一些命令来进行交互:

  1. array_rand返回元素的键而不是值

  2. array_search如果未找到该值,则返回 (bool)false(因为 1 可能会发生这种情况)

  3. 您用来$array_value_key启动一个 for 循环。因为 2 它可能是 (bool)false。

  4. 当您递增布尔值时,它不会改变。即你$ia++什么也没做。

  5. 这就是为什么$ia<=$array_key_last永远不会变成假并且你的循环永远运行的原因。


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信