问题缩小到以下几点:
我有两个数组:user_in_need
和active_users
。 user_in_need
是active_users
的一部分。
Array ( [1] [2] [3] [4] [5] [6] [7] [8] [9] ) // active_users
Array ( [3] [7] [9] ) // user_in_need
我需要从user_in_need
数组中随机分配给每个active_users
合作伙伴。一个警告,我不能让用户被指定为合作伙伴。
这是我能够[不起作用]:
$partners = array();
foreach ($user_in_need as $value) {
$key = array_search($value, $active_users);
unset($active_users[$key]);
shuffle($active_users);
$newpartner = end($active_users);
$partners[$value] = $newpartner;
$user = $value;
$query = "UPDATE users SET target=:partner WHERE uid=:uid";
$query_params = array(':partner' => $newpartner, ':uid' => $user );
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
答案 0 :(得分:0)
伪英语中的这个“伪代码”怎么样:
<?php
SELECT partner_id FROM users WHERE user_id = USER_ID
do{
$partners[] = $row['partner_id']
}
?>
<?php
SELECT user_id FROM users WHERE user_id != USER_ID AND partner_id NOT IN ( implode(', ', $partners) )
?>
完成工作!?
答案 1 :(得分:0)
我不认为自己能够自己解决这个问题,但现在是:
所有需要做的就是像我一样从active_users
数组中删除值,执行所需的操作,然后,在完成所有操作后,只需将值添加回active_users
在循环结束之前 - 从而将其恢复到原始状态。
所以,我刚刚在查询之前添加了$theliving[] = $value;
。