关于for循环的一个错误 哦,这个常识还是知道的,可是不清楚为什么用了count就会陷入死循环,我觉得count($arr)跟6等价,但是为什么会出错 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当 $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<count($arr);$i++) { $key = $arr[$i]; $j = $i-1; while($j>=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的内容,多谢多谢 无满意答案结贴后,问题分数会给谁 推荐一本php的书籍 如何查找子字符串在母字符串中第N次出现的位置? 求一个sql语句! 各位高手,怎么取IE的语言版本呢? php路在何方?散分 session的问题! 第 1 贴 问个js的问题 smarty模板如何向html中<iframe>嵌入部分赋值? xammpp下MySQL插入的汉字变成了问号 急求!php转换成asp php 如何实现 跨域读取其他网站的cookie
$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<count($arr);$i++) {
$key = $arr[$i];
$j = $i-1;
while($j>=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
)