《PHP教程:PHP也能干大事 隨機(jī)函數(shù)》要點(diǎn):
本文介紹了PHP教程:PHP也能干大事 隨機(jī)函數(shù),希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP應(yīng)用寫在前面
PHP應(yīng)用PHP也能干大事是我總結(jié)的PHP語法特性及相關(guān)函數(shù)類庫的經(jīng)典用法,并不一定是真正能實(shí)現(xiàn)四兩撥千斤的功效,但是掌握這些辦法,可以在你的工作和學(xué)習(xí)上有一些幫助,希望大家能集思廣益,將《PHP也能干大事》豐富得更精彩!轉(zhuǎn)載請注明出處(3mc2.com)
PHP應(yīng)用二、前言
PHP應(yīng)用PHP是常見的腳本語言,主要是因?yàn)槠浜唵我讓W(xué),上手快,幾乎50%以上的Web程序都有PHP的身影(不完全統(tǒng)計).PHP為開發(fā)這提供了豐富的函數(shù)和API接口,這使得我們能夠非常便利地使用其強(qiáng)大的內(nèi)置函數(shù)及擴(kuò)展,本文是《PHP也能干大事》系列的第二篇,主要總結(jié)PHP在隨機(jī)數(shù)生成器方面的知識.
PHP應(yīng)用三、PHP隨機(jī)函數(shù)
PHP應(yīng)用PHP隨機(jī)函數(shù)主要有rand、mt_rand、array_rand,還有隨機(jī)“排列”(打亂順序)的函數(shù)shuffle、str_shuffle,能夠發(fā)生唯一ID的uniqid.
PHP應(yīng)用1、rand發(fā)生隨機(jī)數(shù):
PHP應(yīng)用
<?php
$base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$count = strlen($base);
$random = '';
for ($i=0; $i < 16; $i++) {
$random.=$base[rand(0,$count-1)];
}
echo $random;
?>
PHP應(yīng)用rand()函數(shù)是使用libc 的隨機(jī)數(shù)產(chǎn)生器生成隨機(jī)數(shù)的,一般較慢,且有不確定因素,建議使用mt_rand函數(shù)替代.
PHP應(yīng)用getrandmax()函數(shù)可以返回rand函數(shù)能夠發(fā)生的最大的隨機(jī)數(shù)(我的系統(tǒng)為32767),所以在設(shè)置rand函數(shù)第二個參數(shù)時不要超高getrandmax的返回值.
PHP應(yīng)用2、mt_rand發(fā)生隨機(jī)數(shù):
PHP應(yīng)用
<?php
$base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$count = strlen($base);
$random = '';
for ($i=0; $i < 16; $i++) {
$random.=$base[mt_rand(0,$count-1)];
}
echo $random;
?>
PHP應(yīng)用很多老的 libc 的隨機(jī)數(shù)發(fā)生器具有一些不確定和未知的特性并且很慢.PHP 的 rand() 函數(shù)默認(rèn)使用 libc 隨機(jī)數(shù)發(fā)生器.mt_rand() 函數(shù)是非正式用來替換它的.該函數(shù)用了 ? Mersenne Twister 中已知的特性作為隨機(jī)數(shù)發(fā)生器,它可以產(chǎn)生隨機(jī)數(shù)值的平均速度比 libc 提供的 rand() 快四倍.強(qiáng)烈建議在開發(fā)過程中使用mt_rand函數(shù)取代rand.
PHP應(yīng)用如果沒有提供可選參數(shù) min 和 max,mt_rand() 返回 0 到 mt_getrandmax() 之間的偽隨機(jī)數(shù).例如想要 3到 20(包含 3 和 20)之間的隨機(jī)數(shù),用 mt_rand(3, 20).
PHP應(yīng)用3、array_rand函數(shù)
PHP應(yīng)用
<?php
$base = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');
$random = '';
for ($i=0; $i < 16; $i++) {
$random.=$base[array_rand($base)];
}
echo $random;
?>
PHP應(yīng)用array_rand返回數(shù)組中隨機(jī)的鍵值,有點(diǎn)類似mt_rand()函數(shù),其余的沒什么特殊的地方,靈活運(yùn)用罷了.
PHP應(yīng)用4、shuffle函數(shù)
PHP應(yīng)用
<?php
$base = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');
if(shuffle($base)){
print_r($base);
}
?>
PHP應(yīng)用shuffle函數(shù)是打亂一個數(shù)組的序列,有點(diǎn)隨機(jī)的意思,這里就放在隨機(jī)函數(shù)里了.返回值為bool值,相當(dāng)于直接引用了原變量.
PHP應(yīng)用5、str_shuffle函數(shù)
PHP應(yīng)用
<?php
$base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
echo str_shuffle($base);
?>
PHP應(yīng)用這里str_shuffle的功能和shuffle的功能是類似的,唯一分歧的是返回值,str_shuffle的原字符串是不變的.
PHP應(yīng)用6、uniqid函數(shù)
PHP應(yīng)用
<?php
echo uniqid();
//54f806528172f
?>
PHP應(yīng)用uniqid能夠發(fā)生唯一的字符串,這個應(yīng)用的范圍可以相當(dāng)廣泛
PHP應(yīng)用四、總結(jié)
隨機(jī)函數(shù)幾乎是每種語言最基本的功能,PHP對付隨機(jī)函數(shù)的支持也不例外,這里介紹了rand、mt_rand、array_rand、shuffle、str_shuffle、uniqid函數(shù)的基本用法,更多可以結(jié)合實(shí)際應(yīng)用靈活運(yùn)用.
維易PHP培訓(xùn)學(xué)院每天發(fā)布《PHP教程:PHP也能干大事 隨機(jī)函數(shù)》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/11057.html