Обновление массивов в массиве с использованием foreach

Я пытаюсь обновить массив, но массив содержит массивы.

Например,

$data = array( array('name'=>'John','age'=>'19','alive'=>'false'), array('name'=>'Bob','age'=>'32','alive'=>'false'), array('name'=>'Kate','age'=>'22','alive'=>'false'), ); 

Мне нужно добавить еще один элемент во все эти массивы.

Я пробовал использовать foreach

 foreach($data as $onearray){ $onearray['alive'] = 'true'; } 

Нужно ли создавать новый массив и добавлять все обновленные массивы в новый?

используйте ссылку:

 foreach($data as &$onearray) { $onearray['alive'] = 'true'; } unset($onearray) 

и очистить ссылку после этого, поэтому дальнейший код не испортит это


Чтобы иметь возможность напрямую изменять элементы массива в цикле, перед значением $ value нужно указать &. В этом случае значение будет присвоено по ссылке.

см. ссылку foreach для получения дополнительной информации: http://us2.php.net/manual/en/control-structures.foreach.php

Вы пытались использовать ключ массива данных? Вот так:

 foreach($data as $key => $onearray){ $data[$key]['alive'] = 'true'; } 

(Обратите внимание, что $ onearray никогда не используется)

Еще быстрее:

 for($i = 0; $i < count($data); $i++) { $data[$i]['alive'] = 'true'; } 

Использовать встроенную функцию array_walk – применить функцию пользователя к каждому члену массива

 <?php $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); function test_alter(&$item1, $key, $prefix) { $item1 = "$prefix: $item1"; } function test_print($item2, $key) { echo "$key. $item2<br />\n"; } echo "Before ...:\n"; array_walk($fruits, 'test_print'); array_walk($fruits, 'test_alter', 'fruit'); echo "... and after:\n"; array_walk($fruits, 'test_print'); ?> 

Вывод

 Before ...: d. lemon a. orange b. banana c. apple ... and after: d. fruit: lemon a. fruit: orange b. fruit: banana c. fruit: apple