MENU

php 获取一组数组,并随机打乱

October 17, 2019 • 已被 157 位童鞋围观过 • 代码分享

/**
 * 生成不重复的随机数
 * @param  int $start  需要生成的数字开始范围
 * @param  int $end    结束范围
 * @param  int $length 需要生成的随机数个数
 * @return array       生成的随机数
 */
function rand_numbers($start=1,$end=10,$length=4){
    $connt=0;
    $temp=array();
    while($connt<$length){
        $temp[]=mt_rand($start,$end);
        $data=array_unique($temp);
        $connt=count($data);
    }
    sort($data);
    return $data;
}

/*
保留键随机打乱数组顺序
*/
function retain_key_shuffle(array &$arr){
  if (!empty($arr)) {
    $key = array_keys($arr);
    shuffle($key);
    foreach ($key as $value) {
      $arr2[$value] = $arr[$value];
    }
    $arr = $arr2;
  }
}
//Demo
$rands=rand_numbers(0,200,12);
retain_key_shuffle($rands);
foreach($rands as $k=>$v){
    echo $v."\r\n";
}
Last Modified: September 28, 2023