我想知道哪个用户不属于数据库中可用的其他游戏,我得到一个数组如下
$arr2=Array
(
(0) => Array
(
(uid) => 1,
(game_id) => 22
),
(1) => Array
(
(uid) => 2,
(game_id) => 22
)
(2) => Array
(
(uid) => 1,
(game_id) => 23
)
(3) => Array
(
(uid) => 3,
(game_id) => 24
)
);
例如,用户1在游戏22,23但是在24用户3仅在游戏24中 我想找出哪个用户没有参与其他游戏,问题是效率(执行速度) 以及如何在数组中表示,以便我可以使用它来显示。这是神的想法让它像 用户ID => notInGame,notInGame(CSV)?
答案 0 :(得分:1)
如何在PHP中执行此操作的示例:
$array = array(
array
(
'uid' => 1,
'game_id' => 22
),
array
(
'uid' => 2,
'game_id' => 22
),
array
(
'uid' => 1,
'game_id' => 23
),
array
(
'uid' => 3,
'game_id' => 24
),
);
$games = $users = array();
foreach($array as $value)
{
$games[] = $value['game_id'];
$users[$value['uid']][] = $value['game_id'];
}
foreach($users as $uid => $user)
{
$users[$uid] = array_diff($games, $user);
}
print_r($users);
结果(键是uid
):
Array
(
[1] => Array
(
[3] => 24
)
[2] => Array
(
[2] => 23
[3] => 24
)
[3] => Array
(
[0] => 22
[1] => 22
[2] => 23
)
)
答案 1 :(得分:0)
如果您不需要组ID,则下面是非常简单的查询。 num
字段是用户所在的多个组。
SELECT `uid`, COUNT(*) AS `num`
FROM `a_table`
GROUP BY `uid`;
你会得到这样的东西
$arr2=Array
(
(0) => Array
(
(uid) => 1,
(num) => 2
),
(1) => Array
(
(uid) => 2,
(num) => 1
)
(2) => Array
(
(uid) => 3,
(num) => 1
)
);