php:从数组中按顺序获取随机值或多值

时间:2014-02-23 15:08:48

标签: php arrays

我的阵列;

$array=array("x","y","z","t","k");

例如,我想从这个数组得到10个结果,并希望这个结果是有序的(数组顺序)&有随机数值。

像这样:

  1. 结果:x
  2. 结果:x | y | k
  3. 结果:z | k
  4. 结果:y
  5. 结果:x
  6. 结果:x | y | z | t | k
  7. 结果:y | z | k
  8. 结果:x | t
  9. 结果:k
  10. 结果:x | z
  11. 但没有结果:z | x或t | y | k(因为它们不是数组顺序。)

1 个答案:

答案 0 :(得分:1)

尝试以下功能:

function get_random_list($arr, $count) {
    $result = array();
    for ($i = 0; $i < $count; $i++) {
        $length = mt_rand(1, count($arr));
        $keys = (array)array_rand($arr, $length);
        sort($keys);
        $items = array();
        foreach ($keys as $key) {
            $items[] = $arr[$key];
        }
        $result[] = $items;
    }
    return $result;
}

用法:

echo implode("<br />", array_map(function($arr) {
    return implode("|", $arr);
}, get_random_list($array, 10)));

示例输出值:

k<br />x<br />y<br />x|y|z|t|k<br />z<br />y|t|k<br />z<br />y|z<br />z<br />y|k