从foreach值创建嵌套的关联数组

Aiv*_*ras 1 php arrays associative-array

我正在尝试从foreach值创建关联的嵌套数组,但不确定如何以所需的格式获取它,因为现在关联数组被数字1包裹。

我知道这是因为不应该使用array()来包装值,但是不确定如何正确地进行包装。

$arr=array();

foreach ($all_users as $val) {
   $arr[] = array( $val->data->user_nicename => array(
    'username'=> $val->data->display_name,
    'avatar_url' => get_avatar_url($val->ID)
    )
    );
}

print_f($arr);
Run Code Online (Sandbox Code Playgroud)

得到这样的数组结果:

Array
(
   [0] => Array
       (
           [john_s] => Array
               (
                [username] => John Smith
                [avatar_url] => https://secure.gravatar.com
            )

    )

[1] => Array
    (
        [sarah_s] => Array
            (
                [username] => Sarah Smith
                [avatar_url] => https://secure.gravatar.com
            )

    )
)
Run Code Online (Sandbox Code Playgroud)

虽然所需的格式是:

Array
(
    [john_s] => Array
        (
            [username] => John Smith
            [avatar_url] => https://secure.gravatar.com
        )
    [sarah_s] => Array
        (
            [username] => Sarah Smith
            [avatar_url] => https://secure.gravatar.com
        )
)
Run Code Online (Sandbox Code Playgroud)

Mon*_*eus 5

您嵌套的层次太深:

<?php
$arr=array();

foreach ($all_users as $val) {

    // Use $val->data->user_nicename as the index to build an associative array of the other data
    // This assumes that user_nicename is unique throughout the loop
    // If you have multiple users with the same user_nicename then some data can get "lost"
    $arr[$val->data->user_nicename] = array(
        'username'=> $val->data->display_name,
        'avatar_url' => get_avatar_url($val->ID)
    );
}
Run Code Online (Sandbox Code Playgroud)