You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过foreach创建嵌套关联数组?避免被数字索引数组包裹

解决嵌套关联数组被数字索引包裹的问题

我明白你遇到的问题了——你想要的是一个直接以user_nicename为键的关联数组,但当前代码每次循环都往$arr里添加了一个独立的小数组,导致最终结果被数字索引数组包裹起来了。

问题根源

你原来的代码中,$arr[] = array(...)是在给$arr添加新的数字索引元素,每个元素都是只包含一个键值对的数组。这就导致最终的$arr是一个数字索引数组,而不是你期望的单层关联数组。

修正后的代码

只需要去掉外层的array()包裹,直接将user_nicename作为$arr的键,把用户信息数组赋值给这个键即可:

$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_r($arr);

效果对比

  • 原代码输出(不符合预期):
Array
(
    [0] => Array
        (
            [johndoe] => Array
                (
                    [username] => John Doe
                    [avatar_url] => https://example.com/avatar1.jpg
                )

        )
    [1] => Array
        (
            [janedoe] => Array
                (
                    [username] => Jane Doe
                    [avatar_url] => https://example.com/avatar2.jpg
                )

        )
)
  • 修正后输出(符合预期):
Array
(
    [johndoe] => Array
        (
            [username] => John Doe
            [avatar_url] => https://example.com/avatar1.jpg
        )
    [janedoe] => Array
        (
            [username] => Jane Doe
            [avatar_url] => https://example.com/avatar2.jpg
        )
)

这样就能得到你想要的、没有数字索引包裹的嵌套关联数组啦~

内容的提问来源于stack exchange,提问作者Aivaras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:18:20