[英]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.