/** 生成指定個數,以及最小最大值隨機數組(包括最大值) * @parem $min 隨機數組最小值 * @parem $max 隨機數組最大值 * @parem $num 隨機數組個數,默認max-min * @parem $order 排序方式,false不排序,ture默認 由低到高-->asort() * */ function unique_rand($min,$max,$num=0,$order=false) { // 轉為 int 類型 $min=gettype($min)=='int'?$min:intval($min); $max=gettype($max)=='int'?$max:intval($max); // 如果參數寫反 if($max<=$min) { $max=$max+$min; $min=$max-$min; } $num=gettype($num)=='int'?$num:intval($num); $max_num=$max-$min; // 最大數組個數 if($num<1 || $num>$max_num) //隨機數組個數,默認max-min { $num=$max_num; } //生成隨機數組 $return = array(); $i=0; while(count($return)<$num) { $i++; $rand_n=rand($min,$max); $return[$rand_n]=$i; } $return=array_flip($return); // 數組排序 if(isset($order)) { $order=strtolower($order); switch($order) { case 'asort': //由低到高 ,鍵值關聯的保持 case 'arsort': //由高到低 ,鍵值關聯的保持 case 'sort': //由低到高 case 'rsort': //由高到低 $order($return); break; default: sort($return); //由低到高 break; } } return $return; } // 測試調用 $arr=unique_rand(10,132,8); echo "<pre>"; var_dump($arr);