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

$user_list_arrayの関連エントリのコピーである$itemを変更しています

どちらか:( 元のアレイを変更する)

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 に答える