随机数组,显示不到3个相同

时间:2014-02-07 20:32:53

标签: php arrays random

我使用随机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个字符串,但我不希望同一个字符串出现两次以上。我怎样才能做到这一点?

1 个答案:

答案 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();