我需要将3个关联数组合并为具有唯一用户名的单个关联数组
我的3个数组如下所示:(var_export)
acceptedArray array ( 'user1' => 1, 'user2' => 1, 'user3' => 1, )
未完成的数组 array ( 'user1' => 1, 'user3' => 2, 'user15' => 3, )
denyArray array ( 'user1' => 1, 'user15' => 22, 'user20' => 5, )
每个数组都是查询提取的array_count_values个。
我需要这样的输出:
$return = [
['username' => user1, 'accepted' => 1, 'pending' => 3 , 'denied' => 1]
['username' => user2, 'accepted' => 1, 'pending' => 4]
];
我试过了(是的,完全关闭了):
foreach ($acceptedUsers as $key => $value) {
$return[] = array('username' => $key, 'accepted' => $value);
}
foreach ($pendingUsers as $key => $value) {
$return[] = array('username' => $key, 'pending' => $value);
}
但这会创建重复项,而不是追加。
迭代单个数组,并将用户名用作分组的键。
代码:(演示)
$acceptedUsers = ["user1" => 1, "user2" => 1, "user3" => 1];
$pendingUsers = ["user1" => 3, "user2" => 4, "user5" => 2];
$deniedUsers = ["user1" => 1, "user15" => 4, "user10" => 2];
foreach ($acceptedUsers as $user => $count) {
$result[$user]['accepted'] = $count;
}
foreach ($pendingUsers as $user => $count) {
$result[$user]['pending'] = $count;
}
foreach ($deniedUsers as $user => $count) {
$result[$user]['denied'] = $count;
}
var_export($result);
而且,如果您需要子数组中的用户名,那么再次循环遍历这些组可能会比较麻烦。https://3v4l.org/0rUv5
foreach ($acceptedUsers as $user => $count) {
$grouped[$user]['accepted'] = $count;
}
foreach ($pendingUsers as $user => $count) {
$grouped[$user]['pending'] = $count;
}
foreach ($deniedUsers as $user => $count) {
$grouped[$user]['denied'] = $count;
}
foreach ($grouped as $user => $row) {
$result[] = ['username' => $user] + $row;
}
var_export($result);
否则,请isset()
在循环2和3中进行检查。https://3v4l.org/3sstg
foreach ($acceptedUsers as $user => $count) {
$grouped[$user]['username'] = $user;
$grouped[$user]['accepted'] = $count;
}
foreach ($pendingUsers as $user => $count) {
if (!isset($grouped[$user])) {
$grouped[$user]['username'] = $user;
}
$grouped[$user]['pending'] = $count;
}
foreach ($deniedUsers as $user => $count) {
if (!isset($grouped[$user])) {
$grouped[$user]['username'] = $user;
}
$grouped[$user]['denied'] = $count;
}
var_export(array_values($grouped));
或残酷地强制用户名(无条件覆盖先前存在的用户名元素)https://3v4l.org/I1kBu
foreach ($acceptedUsers as $user => $count) {
$grouped[$user]['username'] = $user;
$grouped[$user]['accepted'] = $count;
}
foreach ($pendingUsers as $user => $count) {
$grouped[$user]['username'] = $user;
$grouped[$user]['pending'] = $count;
}
foreach ($deniedUsers as $user => $count) {
$grouped[$user]['username'] = $user;
$grouped[$user]['denied'] = $count;
}
var_export(array_values($grouped));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句