我使用随机PHP数组作为抽奖类型脚本,我有时会获得相同的字符串3次或更多次。如何将随机数限制为仅显示相同字符串的最大值2?
例如我有:
<?php
$raffle = array('string1', 'string2', 'string3', 'string4', 'string5', 'string6');
echo $raffle[array_rand($raffle)] . ", " . $raffle[array_rand($raffle)] . ", " . $raffle[array_rand($raffle)] . ", " . $raffle[array_rand($raffle)];
?>
所以它从数组中随机选择了4个字符串,但我不希望同一个字符串出现两次以上。我怎样才能做到这一点?
答案 0 :(得分:1)
下面是一个函数,它将存储已选择的内容,如果再次选中,则将其从数组中删除。一旦从阵列中删除,它将永远不会被再次挑选。因此,项目可以显示两次,但不会更多:
function pull_raffle() {
static $raffle = array('string1', 'string2', 'string3', 'string4', 'string5', 'string6');
static $pulled_before = array();
$pick = array_rand($raffle);
$string = $raffle[$pick];
if (array_key_exists($string, $pulled_before)) {
unset($raffle[$pick]);
} else {
$pulled_before[$string] = true;
}
return $string;
}
像这样使用:
echo pull_raffle() . ", " . pull_raffle(). ", " . pull_raffle() . ", " . pull_raffle();