【问题标题】:Output array elements randomly with PHP使用 PHP 随机输出数组元素
【发布时间】:2010-01-22 16:45:41
【问题描述】:

如何从大约 20 个数组中随机回显 5 个元素?

谢谢。

【问题讨论】:

标签: php arrays random


【解决方案1】:

这行得通吗?

$values = array_rand($input, 5);

或者,作为更灵活的功能

function randomValues($input, $num = 5) {
    return array_rand($input, $num);
}

//usage
$array = range('a', 'z');

//prints 5 random characters from the alphabet
print_R(randomValues($array));

【讨论】:

    【解决方案2】:
    for($i=0; $i++; $i < 5)
    {
        echo $array[rand(0, count($array)-1);
    }
    

    for($i=0; $i++; $i < 5)
    {
        echo array_rand($array);
    }
    

    array_map("echo", array_rand($array, 5));
    

    【讨论】:

    • 这里有一个变化,你会多次选择同一个元素,这可能不是 OP 想要的。
    • array_map 的要点是创建一个新数组,方法是对现有数组的每一项应用一个函数。如果您只想应用该函数,请使用 array_walk。
    【解决方案3】:

    $n = 数组中要返回的随机数个数

    $min = 最小数量

    $max = 最大数量

    function uniqueRand($n, $min = 0, $max = null)
    {
        if($max === null)
        $max = getrandmax();
       $array = range($min, $max);
       $return = array();
       $keys = array_rand($array, $n);
       foreach($keys as $key)
           $return[] = $array[$key];
       return $return;
    }
    
    $randNums = uniqueRand(5, 0, count($array)-1);
    for($i=0; $i++; $i < 5)
    {
        echo $array[$randNums[i]);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-08-19
      • 2013-11-14
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多