为什么新的 key-value 对在通过 foreach 循环解析数组后没有添加到现有数组中?

Why the new key-value pair is not getting added to the existing array after parsing the array through foreach loop?

我关注标题为 $aFriends 的数组,如下所示: 实际数组非常大,但为了参考,我在这里只打印了前两个元素。

Array
(
    [0] => Array
        (
            [dob_setting] => 4
            [user_id] => 1
            [profile_page_id] => 0
            [user_server_id] => 0
            [user_name] => admin
            [full_name] => admin
            [gender] => 1
            [user_image] => 2015/03/96cc42b833bc0d34b521818272c05011%s.jpg
            [is_invisible] => 0
            [user_group_id] => 1
            [language_id] => 
        )

    [1] => Array
        (
            [dob_setting] => 0
            [user_id] => 30
            [profile_page_id] => 0
            [user_server_id] => 0
            [user_name] => profile-30
            [full_name] => 
            [gender] => 0
            [user_image] => 
            [is_invisible] => 0
            [user_group_id] => 7
            [language_id] => 
        )
)

我想为上述数组的每个元素添加一个键,如下所示:

$aFriends[0]['profile_image'] = image_creator($aFriends[$key][$value]['user_image']);
$aFriends[1]['profile_image'] = image_creator($aFriends[$key][$value]['user_image']);
.
.
.
.
.

为此,我尝试了以下代码:

foreach($aFriends as $key => $value) {
          $aFriends[$key][$value]['profile_image'] = image_creator($aFriends[$key][$value]['user_image']);    

        }

得到与输出相同的数组。不向每个元素添加新键 ['profile_image']。请帮助我获得所需的数组。

谢谢。

这应该有效:

foreach($aFriends as $friend => $values) {
    $aFriends[$friend]['profile_image'] = '';
}
foreach($aFriends as $key => $value) {
      $aFriends[$key][$value]['profile_image'] = image_creator($aFriends[$key][$value]['user_image']);    
}

$value是一个数组,为什么放在那里?

foreach($aFriends as $key => $value) {
      $aFriends[$key]['profile_image'] = image_creator($aFriends[$key]['user_image']);    
}

你不需要在循环体内写[$value]

你的 foreach 循环应该是这样的

foreach($aFriends as $key => $value) {
      $aFriends[$key]['profile_image'] = image_creator($aFriends[$key]['user_image']);    
}