Почему foreach увеличивает refcount на 2 вместо 1?
НикиК заявил вдругая нить:
Прямо перед итерацией$array
"мягко скопировано" для использования в foreach. Это означает, что никакая фактическая копия не сделана, но только пересчет zval из$array
увеличивается до 2.
Тем не менее, мой тестовый код показывает другой результат:
$array = array(0, 1, 2);
xdebug_debug_zval('array'); // refcount=1, is_ref=0
// so far so good
foreach ($array as $key => $value) {
xdebug_debug_zval('array'); // refcount=3, is_ref=0
} // why is refcount 3 instead of 2?
Просто взглянув на код, мы увидим не более двух переменных массива.
Почему рефконт3
?
Почему не пересчет2
послеforeach
это бег?