Это вопрос любопытства о причинах, по которым способ foreach
реализован в PHP.
Рассмотрим:
$arr = array(1,2,3);
foreach ($arr as $x) echo current($arr) . PHP_EOL;
который выведет:
2
2
2
Я понимаю, что foreach
перематывает указатели массива на начало; однако почему он увеличивает его только один раз? Что происходит внутри волшебной коробки? Это просто (уродливый) артефакт?
Спасибо @NickC - для всех, кого интересуют zval
и refcount
, вы можете прочитать основные сведения здесь