$groups = [];
foreach($data as $user)
{
$userGroupId = $user['GroupId'];
$exists = false;
foreach($groups as $group)
{
$groupId = $group['GroupId'];
if ($groupId == $userGroupId)
{
$users = $group['users'];
$currentUser = array(
'UserId'=>$user['UserId'],
'UserName'=>$user['UserName'],
'Surname'=>$user['Surname']
);
array_push($users, $currentUser);
$exists = true;
break;
}
}
if (!$exists)
{
$addGroup = array(
'GroupId'=>$user['GroupId'],
'GroupName'=>$user['GroupName'],
'users'=>[array(
'UserId'=>$user['UserId'],
'UserName'=>$user['UserName'],
'Surname'=>$user['Surname']
)]
);
array_push($groups, $addGroup);
}
}
所以我有一个名为组的空数组。
原始数据是不同用户的数组,包括他们所在的组,我试图将其分类为包含用户数组的组数组。
一切正常,除非我尝试将当前用户推送到 users 数组。
调试时,我在推送后打印了数组,它推得很好,但是当涉及到下一个用户时,以前的用户已经消失了。所以它推了,但后来把它拿出来了。
如果我猜对了,你应该使用参考文献:
foreach($groups as $group) -> foreach($groups as &$group)
$users = $group['users']; -> $users = &$group['users'];