2

可能重复:
如何通过 foreach 循环修改数组的值?

为什么这不起作用?

$user_list_array = array(
    1 => array( "first_name" => "Jim" ),
    2 => array( "first_name" => "Bob" )
)

foreach ($user_list_array as $item ) {
    echo $item["first_name"];
    $item["last_name"] = "test";
} 

var_dump($user_list_array );

我可以取回“first_name”,但不能添加“last_name”;

4

4 回答 4

5

您正在修改 $item,它是来自 $user_list_array 的相关条目的副本

EITHER:( 修改原始数组)

foreach ($user_list_array as $key => $item ) { 
    echo $item["first_name"]; 
    $user_list_array[$key]["last_name"] = "test"; 
} 

或:( 参考)

foreach ($user_list_array as &$item ) { 
    echo $item["first_name"]; 
    $item["last_name"] = "test"; 
} 
unset($item);
于 2012-09-29T13:01:16.057 回答
2
foreach ($user_list_array as &$item ) {
    echo $item["first_name"];
    $item["last_name"] = "test";
} 

在 $item 之前添加 & 将通过引用传递数组,这意味着您对其所做的任何修改都将被保存。

于 2012-09-29T13:00:16.597 回答
0

它不起作用,因为您没有修改实际的数组,这应该可以解决问题。

$user_list_array = array(
    1 => array( "first_name" => "Jim" ),
    2 => array( "first_name" => "Bob" )
)

foreach ($user_list_array as $id => $item ) { 
    echo $item["first_name"]; 
    $user_list_array[$id]["last_name"] = "test"; 
} 
于 2012-09-29T13:02:02.357 回答
0

您应该修改原始数组,而不是$item循环创建的 tmp 变量。你可以那样做

foreach ($user_list_array as $key = $val) {
    echo $val["first_name"];
    $user_list_array[$key]["last_name"] = "test";
} 
于 2012-09-29T13:02:14.497 回答