在之前的文章中我們介紹了隨機(jī)打亂數(shù)組元素的方法,感興趣的可以點(diǎn)擊查閱→《PHP數(shù)組學(xué)習(xí)之隨機(jī)排序,打亂數(shù)組元素》。下面這篇文章我們?cè)趤?lái)看看隨機(jī),介紹一下隨機(jī)獲取一個(gè)或多個(gè)數(shù)組元素的方法。
其實(shí)PHP中提供有一個(gè)數(shù)組函數(shù)array_rand(),它的作用就是隨機(jī)獲取,但只能獲取一個(gè)或多個(gè)數(shù)組鍵名,無(wú)法獲取鍵值。
array_rand()雖然無(wú)法直接獲取數(shù)組鍵值,但我們利用array_rand()獲取到的隨機(jī)鍵名,再多添加幾句代碼來(lái)實(shí)現(xiàn)隨機(jī)獲取元素(鍵名和鍵值都有)。
我們來(lái)看看實(shí)現(xiàn)代碼:
<?php $arr=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $rand = array_rand($arr); $arr2[$rand]=$arr[$rand]; var_dump($arr2); ?>
輸出結(jié)果:
可以看出:我們只隨機(jī)獲取到了一個(gè)元素,因?yàn)?code>array_rand($arr)語(yǔ)句只能隨機(jī)獲取一個(gè)鍵名,那么如何獲取多個(gè)鍵名呢?
只需要給array_rand()函數(shù)設(shè)置兩個(gè)參數(shù),第一個(gè)參數(shù)$array
指定數(shù)組,而第二個(gè)參數(shù)$number
指定要獲取的鍵名的數(shù)目。
<?php $arr=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $rand = array_rand($arr,3); foreach($rand as $val){ $arr2[$val]=$arr[$val]; } var_dump($arr2); ?>
當(dāng)array_rand()函數(shù)獲取到了多個(gè)鍵名,那么就會(huì)返回一個(gè)包含隨機(jī)鍵名的數(shù)組。
這樣我們就可以使用foreach語(yǔ)句來(lái)遍歷$rands
數(shù)組,不斷的根據(jù)$rands
數(shù)組中的鍵名從$arrs
數(shù)組中取值,并賦值給新數(shù)組$arr2
即可。我們來(lái)看看輸出結(jié)果:
刷新一下,結(jié)果就改變了:
注:array_rand()如果獲取的數(shù)量($number
)超過(guò)了 $array
的長(zhǎng)度,就會(huì)導(dǎo)致 E_WARNING 錯(cuò)誤,并返回 NULL。
好了就說(shuō)到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦?!?→php視頻教程
最后給大家推薦一個(gè)PHP數(shù)組的免費(fèi)視頻教程:PHP函數(shù)之a(chǎn)rray數(shù)組函數(shù)視頻講解,快來(lái)學(xué)習(xí)吧!