【发布时间】:2020-02-06 00:21:43
【问题描述】:
上下文
最近,我一直在尝试让 php 吸管。如果你不知道什么是吸管,基本上就是有人得到别人的名字,别人得到别人的名字等等。 为了更清楚,随机生成的代码输出应该是这样的:
(以 4 人为例)
Person A drew person B
Person B drew person D
Person C drew person A
Person D drew Person B
尝试 1
为此,我尝试使用以下代码:
$name = $_POST["names"]; // <-- name-array
$participants = $_POST["participants"]; // <-- stores the amount of participants
$arrX = $name;
for($i = 1; $i <= $participants[0]; $i++) {
echo $name[$i-1];
echo " drew ";
${"randIndex$i"} = array_rand($arrX, 1);
echo $arrX[${"randIndex$i"}];
echo "<br><br>";
}
问题 1
虽然这确实提供了输出,但并不令人满意。 一个人可以画他/她自己,这是不允许的。我希望参与者画出自己以外的人。
我最好的猜测是,为了解决这个问题,我必须使用 if 语句。 我只是不知道如何以最合适的方式做到这一点。
编辑:问题 2
同样的输出也允许两个人画同一个人。 即人 A 和 B(可能还有更多人)画人 C。我想要它,以便每个人都可以画一个尚未绘制的人。
【问题讨论】:
-
array_unique()可能会有所帮助。 -
怎么样?我认为这会导致每个人都画同一个人..
-
仅供参考,您在这里解释为“吸管”,实际上并不是该术语通常所指的内容。 en.wikipedia.org/wiki/Drawing_straws 只是说。
-
等等,不是吗?但话说回来,这个游戏在我的母语中被称为“lootjes trekken”。我只是用谷歌将它翻译成英文,并认为它是完全相同的东西,哎呀..
标签: php arrays for-loop post random