欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

关于for循环的一个错误

程序员文章站 2024-02-02 11:52:40
...
如下两种for循环的写法,为什么第一种运行时好像进入了死循环,而第二种虽然会报错,但是可以运行出结果,不知道这个for循环中count函数有什么影响
=0 && $arr[$j]>$key) {        $arr[$j+1] = $arr[$j];        $j--;    }    $arr[$j+1] = $key;    print_r($arr);}


=0 && $arr[$j]>$key) {        $arr[$j+1] = $arr[$j];        $j--;    }    $arr[$j+1] = $key;    print_r($arr);}


回复讨论(解决方案)

数组下标是0开始的,这是常识。

数组下标是0开始的,这是常识。

哦,这个常识还是知道的,可是不清楚为什么用了count就会陷入死循环,我觉得count($arr)跟6等价,但是为什么会出错。。。

当 $i 等于 6 时 $j 等于 5
$arr[$j+1] = $arr[$j] 就是 $arr[6] = $arr[$j]
这就给 $arr 增加了一个本不存在的元素
很自然,count($arr) 就发生了变化

循环中你有 print_r($arr); 难道还看不出这一点吗?
正确的写法应该是

$arr = array(5, 2, 4, 6, 1, 3);for($i=1;$i=0 && $arr[$j]>$key) {    $arr[$j+1] = $arr[$j];    $j--;  }  $arr[$j+1] = $key;}
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)

当 $i 等于 6 时 $j 等于 5
$arr[$j+1] = $arr[$j] 就是 $arr[6] = $arr[$j]
这就给 $arr 增加了一个本不存在的元素
很自然,count($arr) 就发生了变化

循环中你有 print_r($arr); 难道还看不出这一点吗?
正确的写法应该是

$arr = array(5, 2, 4, 6, 1, 3);for($i=1;$i=0 && $arr[$j]>$key) {    $arr[$j+1] = $arr[$j];    $j--;  }  $arr[$j+1] = $key;}
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
) 谢谢版主,我这设置好像是等全部运行完后才进行输出,所以一直看不到print_r的内容,多谢多谢
相关标签: 循环 错误