PHP 生成隨機數組


/** 生成指定個數,以及最小最大值隨機數組(包括最大值)
 * @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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM