深思 PHP 數(shù)組遍歷的差異(array_diff 的實現(xiàn))
實際一般需要從數(shù)據(jù)庫中隨機提取N道題目。
以下代碼都基于VBS;
通常的編寫類似這樣的
'產(chǎn)生不重復(fù)隨機數(shù) for j=0 to i-1 if blnre=false then end if response.write rndarray(1,10,5)&"<br>"'調(diào)用過程 |
PS。其中的iloop、eloop是為了計算循環(huán)次數(shù)而已。
以上,大多數(shù)人的都是用這種方法編寫的,生成一個隨機數(shù),然后再和以前生成的做比較,判斷是否可用;
但這不是一種AI的,或者說有效率的方法,為什么不用兩個數(shù)組呢?
數(shù)組1,存放需要的字符串,或數(shù)字等,數(shù)組2存放生成的隨機數(shù);當每次隨機生成中間變量temp的一個下標x,賦給數(shù)組2,然后從數(shù)組1中,去掉下標為x的數(shù)字,賦給中間變量temp;這樣每生成一個隨機數(shù),就從數(shù)組1中拿掉這個數(shù),下次再生成一個數(shù)就不會重復(fù)了,這種產(chǎn)生隨機數(shù)的方法原理實際是從數(shù)組1中提取。
方法二
function rndstr(istart,iend,isum) dim vntarray2(),temp,x,y response.write rndstr(1,5,2) |
這樣,是不是更簡單呢
展開一下,假如要生成隨機字符串,包含字母數(shù)字時,僅需為數(shù)組1賦值時,用函數(shù)chr(num);
假設(shè),需要做一個手機中獎的頁面程序。
首先把值賦給數(shù)組1,可以130....~139....循環(huán)賦值,當然實際使用時從數(shù)據(jù)庫中把已有的賦值,然后再隨機提取賦給數(shù)組2;
最后,再修飾一下
temp=replace(join(array2),chr(32),"") phone=left(temp,6)&"***"&right(temp,2) |
得到類似137648***58的結(jié)果,呵呵
寫那么多,累死了~~
相關(guān)文章
PHP簡單實現(xiàn)二維數(shù)組賦值與遍歷功能示例
這篇文章主要介紹了PHP簡單實現(xiàn)二維數(shù)組賦值與遍歷功能,涉及php數(shù)組的簡單賦值、遍歷、運算、讀取等操作使用技巧,需要的朋友可以參考下2017-10-10PHP swoole的process模塊創(chuàng)建和使用子進程操作示例
這篇文章主要介紹了PHP swoole的process模塊創(chuàng)建和使用子進程操作,結(jié)合實例形式分析了swoole的進程管理process模塊實現(xiàn)進程間通信相關(guān)操作技巧,需要的朋友可以參考下2020-03-03PHP5.3連接Oracle客戶端及PDO_OCI模塊的安裝方法
這篇文章主要介紹了PHP5.3連接Oracle客戶端及PDO_OCI模塊的安裝方法,結(jié)合實例形式詳細分析了php5.3環(huán)境下PDO_OCI模塊的安裝方法,并給出了連接Oracle測試程序,需要的朋友可以參考下2016-05-05PHP實現(xiàn)駝峰樣式字符串(首字母大寫)轉(zhuǎn)換成下劃線樣式字符串的方法示例
這篇文章主要介紹了PHP實現(xiàn)駝峰樣式字符串(首字母大寫)轉(zhuǎn)換成下劃線樣式字符串的方法,涉及php正則替換相關(guān)操作技巧,需要的朋友可以參考下2017-08-08