繁体   English   中英

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

[英]Create nested associative array from foreach values

我正在尝试从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);

得到这样的数组结果:

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
            )

    )
)

虽然所需的格式是:

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
        )
)

您嵌套的层次太深:

<?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)
    );
}

然后做:

$arr=array();

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

print_f($arr);

您需要在原始数组中创建一个键,而不是向其附加另一个数组。

当您使用$ arr []时,它将创建数字数组位置,并在每次循环中执行时递增该位置。 如果要创建关联数组,则必须在方括号[]中添加关联数组键,在这种情况下,它将为$ val-> data-> user_nicename。 只需对您的代码进行如下小改动,

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

print_f($arr);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM