0

我一直在寻找一点点,但我找不到任何值得的东西。所以这是我的问题:
我有一个很长的字符串,我想从中挑选 3 个随机集合,然后用逗号分隔 3 个字符串。以下是相关代码:

$mapsandmodes = array("Raid - Hardpoint", "Raid - Capture The Flag", "Raid - Search and Destroy", "Plaza - Hardpoint", "Plaza - Capture The Flag", "Aftermath - Search and Destroy", "Express - Capture The Flag", "Express - Hardpoint", "Express - Search and Destroy", "Meltdown - Search and Destroy", "Slums - Search and Destroy", "Slums - Hardpoint", "Slums - Capture The Flag", "Standoff - Capture The Flag", "Standoff - Search and Destroy", "Yemen - Hardpoint");

我尝试使用$mapswithmodes = array_rand($mapsandmodes),但输出一个数字(到目前为止我已经得到“1”和“2”)。我希望它为该长行选择 3 个随机字符串集,然后用逗号分隔 3 个字符串,以便将其放入 MYSQL 表中。

4

2 回答 2

2

假设您想选择三个随机元素而不进行替换(例如,您永远不会选择同一个元素两次):

步骤 1) 随机播放数组http://php.net/manual/en/function.shuffle.php

步骤 2) 获取数组的前三个元素

第 3 步)使用 implode 将它们连接成一个字符串,用逗号作为胶水http://www.php.net/manual/en/function.implode.php

如果您想选择三个带有替换的随机元素(例如,您可以选择两次相同的元素):

步骤 1) 调用 array_rand($mapsandmodes) 三次。这为您提供了数组的索引。因此,$mapsandmodes[array_rand($mapsandmodes)] 将在数组中给出一个随机值。

步骤 2) 使用内爆

于 2013-03-26T02:04:54.140 回答
0

或者改组,您原始代码的问题只是误解了 array_rand(): array_rand() doc

$optionkeys = array_rand($mapsandmodes, 3);

那么 $optionkeys 将是一个长度为 3 的数组,其值是从原始数组中选择的键,您可以使用 $mapsandmodes[($optionkeys[0])]、$mapsandmodes[($optionkeys[1 ])] 和 $mapsandmodes[($optionkeys[2])]。

于 2013-03-26T02:16:33.210 回答