Пожалуйста, обратите внимание: этот тестPHP массив отливать на Еогеасп не проходит переменную по ссылке
$data=[["id"=>1,"text"=>"One"],["id"=>2,"text"=>"Two"]];
foreach((array)$data as &$iter)
$iter["append"]=true;
print_r($data);
Это выход
Array
(
[0] => Array
(
[id] => 1
[text] => One
)
[1] => Array
(
[id] => 2
[text] => Two
)
)
Я хочу ITER над массив и добавить еще один ключ внутри ассоциативный массив, поэтому $ iter передается по ref. Я установил бросок внутри «foreach», чтобы быть уверенным, что пустая/нулевая переменная может быть принята без ошибок с помощью инструкции foreach.
Как вы видите на выходе, foreach не добавляет значение, но если я удалю его, он будет работать.
foreach($data as &$iter)
$iter["append"]=true;
print_r($data);
Это (справа) выход
Array
(
[0] => Array
(
[id] => 1
[text] => One
[append] => 1
)
[1] => Array
(
[id] => 2
[text] => Two
[append] => 1
)
)
Я решил литье с отдельной командой вне Еогеаспа, но мой вопрос:
Является ли это ошибка?
Этот тест был запущен на PHP версии 5.6.14 (Apache-2.4 окна-10)
Заданное значение может отличаться от значения, которое находится внутри переменной. Поэтому, если он * будет * работать, он будет неявным назначением: '$ variable = (array) $ variable;'. – Rizier123
Хорошо, но разные значения означают разные ссылки? – Tobia
Для массивов да. –