使用foreach更新数组中的数组

Nav*_*age 4 php arrays

我正在尝试更新数组,但数组包含数组.

举个例子,

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

);
Run Code Online (Sandbox Code Playgroud)

我需要为所有这些数组添加另一个元素.

我尝试过使用foreach

foreach($data as $onearray){
     $onearray['alive'] = 'true';
}
Run Code Online (Sandbox Code Playgroud)

我是否需要创建一个新阵列并将所有更新的阵列添加回新阵列?

小智 7

您是否尝试使用数据阵列密钥?像这样:

foreach($data as $key => $onearray){
     $data[$key]['alive'] = 'true';
}
Run Code Online (Sandbox Code Playgroud)

(注意$ onearray永远不会被使用)

更快的是:

for($i = 0; $i < count($data); $i++) {
    $data[$i]['alive'] = 'true';
}
Run Code Online (Sandbox Code Playgroud)


flo*_*oww 5

使用引用:

foreach($data as &$onearray) {
     $onearray['alive'] = 'true';
}
unset($onearray)
Run Code Online (Sandbox Code Playgroud)

然后清理参考,所以进一步的代码不会弄乱它


为了能够直接修改循环中的数组元素,在$ value之前加上&.在这种情况下,该值将通过引用分配.

请参阅foreach-reference了解更多信息:http://us2.php.net/manual/en/control-structures.foreach.php