如何创建随机,循环的合作伙伴分配?

Dav*_*vid 2 php mysql

我允许用户在我的网站上注册"游戏"; 正常情况下,他们都会收到唯一的ID.在给定的时间点,注册将停止.那时,我想运行代码来分配合作伙伴,但不是配对.

所以,如果我有以下内容:

+ -------- + ------- +
| user_id | 伙伴|
+ -------- + ------- +
| 1 | |
| 3 | |
| 7 | |
| 11 | |
| 12 | |
| 18 | |
+--------+-------+

what would I do to end up with something like this:

+--------+--------+
| user_id | partnr |
+--------+--------+
| 1 | 7 |
| 3 | 12 |
| 7 | 18 |
| 11 | 1 |
| 12 | 11 |
| 18 | 3 |
+ -------- + -------- +

1,7,18,3,12,11; 1,7,18,3,12,11

$query = "SELECT users FROM tabl";
$result = mysql_query ($query)
    or die ("Query '$query' failed with error message: \"" . mysql_error () . '"');

while ($row = mysql_fetch_array($result)) {
    $users[] = $row[0];
}

$current = end($users);
$partners = array();
foreach ($users as $user)
{
        $partners[$user] = $current;
        $current = $user;
}
print_r($partners);
Run Code Online (Sandbox Code Playgroud)

这似乎有效,感谢Sjoerd,但我需要将其写回合作伙伴专栏.

Sjo*_*erd 5

  • 检索用户列表.
  • 随机播放此列表(可选).
  • 将每个用户分配给列表中的下一个用户,其中最后一个用户将第一个用户作为合作伙伴.

代码循环遍历数组并分配合作伙伴:

$users = array('john', 'jack', 'jones', 'joelle', 'jesica');

$current = end($users);
$partners = array();
foreach ($users as $user)
{
        $partners[$user] = $current;
        $current = $user;
}
print_r($partners);
Run Code Online (Sandbox Code Playgroud)