Foreach по ссылке работает иначе, если присвоение переменной находится внутри foreachPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Foreach по ссылке работает иначе, если присвоение переменной находится внутри foreach

Сообщение Anonymous »

Может кто-нибудь объяснить, почему эти два фрагмента кода возвращают разные значения?

Код: Выделить всё

foreach($z = [[1,2,3],[4,5,6]] as &$i)
{
$i[] = 6;
}
echo json_encode($z), "\n"; // prints "[[1,2,3],[4,5,6]]"

// VS

$z = [[1,2,3],[4,5,6]];
foreach($z as &$i)
{
$i[] = 6;
}
echo json_encode($z); // prints "[[1,2,3,6],[4,5,6,6]] "
Я ожидал, что присвоение $z массиву в любом случае произойдет до foreach, но что-то в помещении назначения внутри foreach приводит к тому, что массив, хранящийся в $z, не будет влияет добавление в конец массива $i.

Подробнее здесь: https://stackoverflow.com/questions/791 ... in-foreach
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»