$arr = array('a' => 1, 'b' => 2, 'c' => 3); reset($arr); while (list($k, $v) = each($arr)) { print "$k => $v\n"; $h[] = $arr; }
Используйте foreach($arr as $k => $v) вместо reset($arr); while(...)
foreach($arr as $k => $v)
reset($arr); while(...)
Причина, по которой он не работает, заключается в том, что $h[] = $arr; сбрасывает внутренний указатель массива, если он в конце, и, таким образом, цикл начинается с начала.
$h[] = $arr;
ThiefMaster прав.С присвоением $arr вы сбрасываете внутренний указатель, когда вы находитесь на последнем элементе.При использовании foreach() вы будете работать с копией исходного массива.
$arr
foreach()