php - 对象被推入数组,然后随机取出
问题描述
$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);
}
}
所以我有一个名为组的空数组。
原始数据是一个不同用户的数组,包括他们所在的组,我试图将它们分类到一个组数组中,其中包含一组用户。
一切正常,除非我试图将当前用户推送到用户数组。
调试时,我在推送后打印了数组,并且推送很好,但是当涉及到下一个用户时,以前的用户已经走了。所以它被推了,但后来又把它拿出来了。
解决方案
如果我说对了,您应该使用参考:
foreach($groups as $group) -> foreach($groups as &$group)
$users = $group['users']; -> $users = &$group['users'];
推荐阅读
- python - 尝试安装 Pillow (python) 时出错
- scala - Spark-Snowflake 连接错误
- python - 我的为 Null 值返回 0 的序列化程序不起作用
- python - 带有 Python NetworkX 图的 Reingold Tilford 布局
- javascript - 我应该对可选但永不失败的事件使用承诺吗?
- java - 如何将 minDF 特征提取器 CountVectorizer 参数分别应用于每个标签,而不是应用于整个数据集
- python - Python:ValueError:无法使用长度与值不同的多索引选择索引器进行设置
- c - Realloc 返回 NULL 但为什么呢?
- spring - 具有不同服务中的变量的共同路径
- amazon-web-services - 为什么我的 OpsWorks 堆栈的一个实例会跳过我的部署?