我想问一下以下这段代码为什么会输出这样的结果?不是应该全部为空吗? $a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");for ($i = 0; $i < count($a1); $i++) { array_splice($a1,$i, 1);}print_r($a1);效果:Array ( [0] => Cat [1] => Bird ) PHP 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 模拟下过程第一次循环 array_splice($a1,0, 1); $a1变成了 $a1=array(0=>"Cat",1=>"Horse",2=>"Bird");第二次循环 array_splice($a1,1, 1); $a1变成了 $a1=array(0=>"Cat",1=>"Bird");第三次循环 $i==2 count($11)==2 不符合循环条件 循环退出 自己看$a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");for ($i = 0; $i < count($a1); $i++) { array_splice($a1,$i, 1); echo "i=$i ", print_r($a1, 1), '<br>'; }print_r($a1);i=0 Array ( [0] => Cat [1] => Horse [2] => Bird ) i=1 Array ( [0] => Cat [1] => Bird ) Array ( [0] => Cat [1] => Bird ) 问题在于你的起点不对 这个不难理解吧count($a1)每次array_splice移除之后都在变化$a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");for ($i = 0; $i < count($a1); $i++) { array_splice($a1,$i, 1);}print_r($a1);第1次循环,$i = 0,count($a1)=4 移除Dog,$a1=array(0=>"Cat",1=>"Horse",2=>"Bird");第2次循环,$i = 1,count($a1)=3 移除Horse,$a1=array(0=>"Cat",1=>"Bird");第3次循环,$i = 2,count($a1)=2 没用任何值可以移除,$a1=array(0=>"Cat",1=>"Bird");退出循环结果就是$a1=array(0=>"Cat",1=>"Bird"); 这里你要注意count($a1),每次循环都要计算一次,但是每次里面的元素都在减少一个,到第三次次循环的时候,元素个数和$i都是2,所以就结束了,所以肯定会剩下两个元素的,即使你把count提出来,即这里直接写4,也肯定有剩余吧,虽然我没有去写写看,但是这里的$i是不断增加的,而第三次循环时,元素还有2个,而已经没有了第三个位置,所以肯定有剩余,你可以在for循环的最后输出下这个$a1,看一下每次都变成了什么,为什么 php调用另外一个文件中的方法 关于位运算 可能是PHP中字符转换的问题 discuz论坛 如何实现某人上线论坛板块名字变色 请问: 在PHP5中,需要上传一个文件从用户端到服务器端。如何实现? 帮忙推荐一个比较好的PHP虚拟主机 pear中的cache类谁用过???事关缓存!! 关于运行sql的问题??在线等待!高分赠送! asp和PHP哪个好,学哪个????? 哪儿有PHP+MySQL的免费主页空间? tinyint(1)的空白? 这两个表达式,怎么会给我把数字过滤了,如果要他不过滤数字,该怎么写。
第一次循环 array_splice($a1,0, 1); $a1变成了 $a1=array(0=>"Cat",1=>"Horse",2=>"Bird");
第二次循环 array_splice($a1,1, 1); $a1变成了 $a1=array(0=>"Cat",1=>"Bird");
第三次循环 $i==2 count($11)==2 不符合循环条件 循环退出
for ($i = 0; $i < count($a1); $i++) {
array_splice($a1,$i, 1);
echo "i=$i ", print_r($a1, 1), '<br>';
}
print_r($a1);i=0 Array ( [0] => Cat [1] => Horse [2] => Bird )
i=1 Array ( [0] => Cat [1] => Bird )
Array ( [0] => Cat [1] => Bird ) 问题在于你的起点不对
count($a1)每次array_splice移除之后都在变化
$a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
for ($i = 0; $i < count($a1); $i++) {
array_splice($a1,$i, 1);
}
print_r($a1);
第1次循环,$i = 0,count($a1)=4 移除Dog,$a1=array(0=>"Cat",1=>"Horse",2=>"Bird");
第2次循环,$i = 1,count($a1)=3 移除Horse,$a1=array(0=>"Cat",1=>"Bird");
第3次循环,$i = 2,count($a1)=2 没用任何值可以移除,$a1=array(0=>"Cat",1=>"Bird");退出循环
结果就是
$a1=array(0=>"Cat",1=>"Bird");