首页 > 解决方案 > 对象被推入数组,然后随机取出

问题描述

$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);
        }
    }

所以我有一个名为组的空数组。

原始数据是一个不同用户的数组,包括他们所在的组,我试图将它们分类到一个组数组中,其中包含一组用户。

一切正常,除非我试图将当前用户推送到用户数组。

调试时,我在推送后打印了数组,并且推送很好,但是当涉及到下一个用户时,以前的用户已经走了。所以它被推了,但后来又把它拿出来了。

标签: phplaravel

解决方案


如果我说对了,您应该使用参考:

foreach($groups as $group) -> foreach($groups as &$group)

$users = $group['users']; -> $users = &$group['users'];

推荐阅读