Почему 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 это бег?

Ответы на вопрос(1)

Ваш ответ на вопрос