помогите с php листингом

Статус
В этой теме нельзя размещать новые ответы.

sexyboy

Постоялец
Регистрация
9 Июн 2008
Сообщения
90
Реакции
58
PHP:
<?php
$numbers = array(100, 313, 605); 
foreach ($numbers as &$v) $v++; 
print_r($numbers);
foreach ($numbers as $v); 
echo "<br>";
print_r($numbers);
?>
Вы можете теперь убедиться, что новая версия программы действительно изменяет
массив $numbers, а не работает с его копией.
Внимание!
Ссылочная переменная $v— это полноценная жесткая ссылка, которая не
уничтожается после завершения работы цикла foreach! Таким образом, если вы попытаетесь что-то
присвоить переменной $v в конце программы, изменения затронут последний элемент
массива $numbers — ведь именно он соответствовал $v на последней итерации цикла!
В последнем цикле вывода листинга: последний элемент массива $numbers, которому соответствует жесткая ссылка $v, "затирается" при последующей итерации по массиву.
Помогите пожалуйста разобратся с этим листингом, вроде все понятно(в 1 цикле есть жесткая ссылка &$v которая сохраняет последние значения на последней итерации, потом идет второй цикл и тут я не могу понять почему значения которое принимает $v(на первой итерации) не заменяет последние значение &$v с первого цикла, а заменяет на то значение что стоит перед переменной, т.е. я немогу понять почему результат именно такой Array ( [0] => 101 [1] => 314 [2] => 314) а не такой Array ( [0] => 101 [1] => 314 [2] => 101)- те первое значения массива 2-го цикла заменило то последнее значения 1-го цикла). Объясните пожалуйста как работает второй цикл(почему он заменяет именно так?).
Заранее спасибо.
з.ы. запостил здесь так как листинг очень простой и не стоит PHP раздела-) и дабы не подумали что я набиваю посты, уже 3-ий час думаю и немогу понять:(
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху