我想大家都知道array_rand()函數(shù)是一個(gè)隨機(jī)在數(shù)組中取一個(gè)或者多個(gè)元素的函數(shù),我們也都知道這個(gè)函數(shù)有兩個(gè)參數(shù).第一個(gè)參數(shù)是選擇的一個(gè)數(shù)組,但是對(duì)于第二個(gè)參數(shù)大家或許就沒(méi)有過(guò)多的去關(guān)心了,下面我來(lái)說(shuō)說(shuō)這第二個(gè)參數(shù)的故事.
最近寫(xiě)了一個(gè)方法,主要是從一個(gè)分類數(shù)組中隨機(jī)取一定數(shù)量的分類進(jìn)行輸出.因?yàn)榘婷娴男枰?我選擇了6個(gè),所以自然而然的寫(xiě)成?array_rand($sort,6) 這樣輸出6個(gè)分類信息.在本地測(cè)試后一切正常.于是上傳到網(wǎng)站使用這個(gè)方法.刷新頁(yè)面后結(jié)果沒(méi)有任何輸出!怎么回事?說(shuō)好的正常的呢,在本地刷新看看,還是正常的顯示了6個(gè)分類了啊.看了看代碼,在同一個(gè)頁(yè)面的其他方法都是正常的,唯獨(dú)我這個(gè)不行.看了看代碼也沒(méi)有什么錯(cuò)誤,都是很簡(jiǎn)單的php代碼,實(shí)在是找不到問(wèn)題所在了,只好使用print_r 和 echo 一步步輸出看下到底哪里出問(wèn)題了,然后終于發(fā)現(xiàn)了?array_rand() 這個(gè)函數(shù)有問(wèn)題,它沒(méi)有輸出任何內(nèi)容!于是便print_r(第一個(gè)參數(shù)的那個(gè)數(shù)組),結(jié)果正常,看來(lái)的第二個(gè)參數(shù)的問(wèn)題了.把他改為1之后,輸出了一個(gè)分類.改為2之后位于輸出,之后改為其他數(shù)字都不輸出!為什么改為1就正常.于是想到分類問(wèn)題,在網(wǎng)站后臺(tái)看了看,發(fā)現(xiàn)只有一個(gè)分類,然而在本地測(cè)試時(shí)分類數(shù)為8個(gè),難道是這個(gè)問(wèn)題?于是在本地將這個(gè)參數(shù)改為10之后,頁(yè)面成功的沒(méi)有內(nèi)容顯示了,選了個(gè)小于8的數(shù)字后沒(méi)有意外的正常顯示了.
之后發(fā)現(xiàn),只要第二個(gè)參數(shù)是大于第一個(gè)數(shù)組元素?cái)?shù)量的值,就不會(huì)有任何輸出內(nèi)容.所以在使用這個(gè)函數(shù)時(shí),當(dāng)數(shù)組元素不固定時(shí),加個(gè)條件判斷語(yǔ)句吧.否則這個(gè)函數(shù)在某些特殊情況下就給你罷工了.