Heim > Backend-Entwicklung > PHP-Tutorial > 关于for循环的一个异常

关于for循环的一个异常

WBOY
Freigeben: 2016-06-13 11:55:14
Original
994 Leute haben es durchsucht

关于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 />
Nach dem Login kopieren


<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 />
Nach dem Login kopieren

------解决方案--------------------
当 $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 />
Nach dem Login kopieren
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage