为什么这不起作用?
$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”;
答案 0 :(得分:4)
您正在修改$ item,这是来自$ user_list_array的相关条目的副本
<强>或者:强> (修改原始数组)
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);
答案 1 :(得分:2)
foreach ($user_list_array as &$item ) {
echo $item["first_name"];
$item["last_name"] = "test";
}
添加&amp;在$ item将通过引用传递数组之前,这意味着您将保存对它所做的任何修改。
答案 2 :(得分: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";
}
答案 3 :(得分:0)
您应该修改原始数组,而不是循环创建的tmp变量$item
。你可以这样做
foreach ($user_list_array as $key = $val) {
echo $val["first_name"];
$user_list_array[$key]["last_name"] = "test";
}