我一直在寻找,但我找不到任何有价值的东西。所以这是我的问题:
我有一个很长的字符串,我想从中挑出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表中。
答案 0 :(得分: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)使用implode
答案 1 :(得分:0)
除了shuffle之外,原始代码的问题只是误解了array_rand():array_rand() doc
$optionkeys = array_rand($mapsandmodes, 3);
然后$ optionkeys将是一个长度为3的数组,其值是从原始数组中选择的键,您可以使用$ mapsandmodes [($ optionkeys [0])],$ mapsandmodes [($)按顺序访问字符串optionkeys [1])]和$ mapsandmodes [($ optionkeys [2])]。