Dlaczego foreach zwiększa refcount o 2 zamiast 1?

NikiC stwierdził winny wątek:

Tuż przed [foreach] iteracją$array jest „miękko kopiowany” do użycia w foreach. Oznacza to, że żadna rzeczywista kopia nie jest wykonywana, a jedynie przeliczenie zval na$array jest zwiększona do 2.

Jednak mój kod testowy pokazuje inny wynik:

$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?

Patrząc na kod, możemy zobaczyć co najwyżej dwie zmienne tablicowe.

Dlaczego jest refcount3?

Dlaczego nie jest refcount2 poforeach prowadzony jest?

questionAnswers(1)

yourAnswerToTheQuestion