嵌套的foreach用于删除和重新插入,仅插入最后一个元素

时间:2018-07-03 20:03:19

标签: php arrays foreach

因此,我有一个用户数组,每个用户都有一个ID和游戏列表。我将它作为一对userID和gameID存储在数据库中。

每次我要为每个用户更改游戏时,我都需要擦除旧游戏,然后插入新游戏,所以我这样做:

        foreach($users as $user) {
            $where['id_user'] = $user->id;
            $this->tableUsersGames->delete($where);
            foreach($user->games as $game){
                $data['id_user'] = $user->id;
                $data['id_game'] = $game->id;
                $this->tableUsersGames->insert($data);
            }
        }

但是它只会在列表中插入最后一个用户/游戏。我要解决的问题是改为有两个foreach循环,一个循环用于删除数据,然后另一个循环来插入数据,因此它现在可以正常工作。

我想知道的是为什么这没用?我什至在其中添加了一些回声,以确保它运行正确,并且顺序正确。

确定,进行编辑以澄清情况。

$ users变量如下:

[
 {id: 1, games: [
   {id: 3, name: 'xyz'},
   {id: 5, name: 'xyz'}
  ]
 },
 {id: 2, games: [
   {id: 2, name: 'xyz'},
   {id: 9, name: 'xyz'}
  ]
 }
]

该框架完全按照您的期望进行操作,不需要提交。

0 个答案:

没有答案