Почему следующий код PHP создает бесконечный цикл? - PullRequest
0 голосов
/ 19 апреля 2011
$arr = array('a' => 1, 'b' => 2, 'c' => 3);
reset($arr);
while (list($k, $v) = each($arr)) {
    print "$k => $v\n";
    $h[] = $arr;
}

Ответы [ 2 ]

2 голосов
/ 19 апреля 2011

Используйте foreach($arr as $k => $v) вместо reset($arr); while(...)

Причина, по которой он не работает, заключается в том, что $h[] = $arr; сбрасывает внутренний указатель массива, если он в конце, и, таким образом, цикл начинается с начала.

0 голосов
/ 19 апреля 2011

ThiefMaster прав.С присвоением $arr вы сбрасываете внутренний указатель, когда вы находитесь на последнем элементе.При использовании foreach() вы будете работать с копией исходного массива.

...