首頁 > 後端開發 > php教程 > 关于for循环的一个异常

关于for循环的一个异常

WBOY
發布: 2016-06-13 11:55:14
原創
992 人瀏覽過

关于for循环的一个错误
如下两种for循环的写法,为什么第一种运行时好像进入了死循环,而第二种虽然会报错,但是可以运行出结果,不知道这个for循环中count函数有什么影响

<br /><?php<br />$arr = array(5, 2, 4, 6, 1, 3);<br /> for($i=1;$i<=count($arr);$i++) {<br />    $key = $arr[$i];<br />    $j = $i-1;<br />    while($j>=0 && $arr[$j]>$key) {<br />        $arr[$j+1] = $arr[$j];<br />        $j--;<br />    }<br />    $arr[$j+1] = $key;<br />    print_r($arr);<br />}<br />
登入後複製


<br /><?php<br />$arr = array(5, 2, 4, 6, 1, 3);<br /> for($i=1;$i<=6;$i++) {<br />    $key = $arr[$i];<br />    $j = $i-1;<br />    while($j>=0 && $arr[$j]>$key) {<br />        $arr[$j+1] = $arr[$j];<br />        $j--;<br />    }<br />    $arr[$j+1] = $key;<br />    print_r($arr);<br />}<br />
登入後複製

------解决方案--------------------
当 $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);<br />for($i=1;$i<count($arr);$i++) {<br />  $key = $arr[$i];<br />  $j = $i-1;<br />  while($j>=0 && $arr[$j]>$key) {<br />    $arr[$j+1] = $arr[$j];<br />    $j--;<br />  }<br />  $arr[$j+1] = $key;<br />}<br />
登入後複製
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板