下面這種方式是我經常使用的,比較人性化
/** * 產生隨機字串 * @param int $length 要產生的隨機字串長度 * @param string $type 隨機碼類型:0,數字+大寫字母;1,數字;2,小寫字母;3,大寫字母;4,特殊字元;-1,數字+大小寫字母+特殊字元 * @return string */function randCode($length = 5, $type = 0) { $arr = array(1 => "0123456789", 2 => "abcdefghijklmnopqrstuvwxyz", 3 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 4 => "~@#$%^&*(){}[]|"); if ($type == 0) { array_pop($arr); $string = implode("", $arr); } else if ($type == "-1") { $string = implode("", $arr); } else { $string = $arr[$type]; } $count = strlen($string) - 1; for ($i = 0; $i < $length; $i++) { $str[$i] = $string[rand(0, $count)]; $code .= $str[$i]; } return $code;}
產生定長隨機數:
function generate_code($length = 4) { return rand(pow(10,($length-1)), pow(10,$length)-1); }
下面跟上面的效果一樣,只是寫法不一樣而已。
function generate_code($length = 4) { $min = pow(10 , ($length - 1)); $max = pow(10, $length) - 1; return rand($min, $max); }
如:
echo generate_code(5);//輸出結果: 56482
再重新整理一次,所以數字和順序都會變動。
以上這兩種代碼比較簡潔,但也只能產生數字,追求代碼簡潔的可以使用
$arr=range(1,10); shuffle($arr); foreach($arr as $values) { echo $values.","; } //輸出結果:10,5,7,8,6,2,9,4,1,3,1
這種主要是靠php的內建函數range()來產生,產生兩個參數範圍的隨機數,而且他們是可以產生多組數字,這種就比較呆板了,而且不是都放在方法裡面,不過大家可以根據需求來使用。
以下這種跟上面這種沒多大區別,只是產生的方法不太一樣,主要是靠array_unique函數來產生。
$arr=array(); while(count($arr)<10) { $arr[]=rand(1,10); $arr=array_unique($arr); } echo implode(" ",$arr);
其他的產生方法我在這裡就不多說了,我們只要記住常用的,而且效率比較高的幾種就行了,我們在開發的過程中,可以根據需求來寫適合我們自己的php隨機數函數。