Есть массив:
$test = [
0 => [
'id' => 1,
'name' => 'test'
],
1 => [
'id' => 2,
'name' => 'test'
]
];
И простая переборка foreach с попыткой добавить в массив ключ со значением
foreach($test as $t) {
$t['test'] = 'add';
}
Почему таким образом в массив не добавляется ключ? Рабочий вариант найден, просто интересно знать почему первый вариант не работает
foreach($test as $key => $t) {
$test[$key]['test'] = 'add';
}
foreach($test as $t) {
$t['test'] = 'add';
}
Потому что тут при переборе новый элемент записывается в переменную $t (как-бы создается новый независимый элемент). Если вы хотите его изменять, нужно просто указать чтобы $t использовала ссылку на элемент массива, вот так:
foreach($test as &$t) {
$t['test'] = 'add';
}
Тогда переменная $t будет ссылаться на элемент массива.
Продвижение своими сайтами как стратегия роста и независимости