如何通过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
相关产品推荐
相关产品推荐

