直接用select * from student order by rand() limit 5不是一個(gè)很好的習(xí)慣,這個(gè)要考慮到數(shù)據(jù)庫(kù)的大小問(wèn)題,比如,數(shù)據(jù)量為10W以上,這樣查詢的效率是非常低的,資源也消耗挺多!你可以考慮在php與mysql結(jié)合來(lái)實(shí)現(xiàn),比如:先用mysql 的count()計(jì)算出student的總條數(shù)$sum_num,賦值到php中的變量中,后在php中更具這個(gè)總條數(shù)進(jìn)行生成隨機(jī)數(shù)(這里涉及到你的5條數(shù)據(jù)是否為連續(xù)的5條隨機(jī)數(shù),還是打亂的隨機(jī)五條),這里如果生成連續(xù)的數(shù)據(jù)就只需要生成一個(gè)小于$sum_num-5的隨機(jī)數(shù)就可以了!根據(jù)這個(gè)隨機(jī)數(shù)進(jìn)行l(wèi)imit取出5條就可以;如果這里需要生成打亂的隨機(jī)數(shù),就需要生成5個(gè)不相同的并且小于$sum_num隨機(jī)數(shù),最后根據(jù)這些隨機(jī)數(shù)在數(shù)據(jù)庫(kù)中查詢,第一種情況用到limit 隨機(jī)數(shù),5;;第二種情況用到in(隨機(jī)數(shù)1,隨機(jī)數(shù)2,隨機(jī)數(shù)3,隨機(jī)數(shù)4,隨機(jī)數(shù)5);在數(shù)據(jù)量大的情況下,這樣的效率和資源消耗的情況下都要比select * from student order by rand() limit 5好得多,當(dāng)然如果數(shù)據(jù)量不多的話就用這個(gè)也可以!只是給你普及個(gè)知識(shí)!祝你學(xué)習(xí)愉快!(這里暫且認(rèn)為你會(huì)用php生成隨機(jī)數(shù)并且這里的php生成的隨機(jī)數(shù)必須為大于0的整型哦,不會(huì)的話可以先百度、google,最后可以繼續(xù)給我留言)!
創(chuàng)新互聯(lián)是一家專業(yè)提供蘇家屯企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為蘇家屯眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
這里因?yàn)槟愕膇d會(huì)有缺失所以有的方法不適用!就不一一列舉了!
給你寫(xiě)個(gè)函數(shù):
function?haha($arr){
$keys=array_rand($arr,5);
$re=array();
foreach($keys?as?$v){
$re[$v]=$arr[$v];
}
return?$re;???
}
如果文件不是太大的話,可以這樣寫(xiě):
?php
$arr=file('a.txt'); //文本文件,請(qǐng)修改合適的名字和位置
$n=count($arr);
for ($i=0;$i5;$i++) echo $arr[rand(0,$n)]."br';
?
你可以先這樣嘛,每次產(chǎn)生隨機(jī)數(shù)的時(shí)候,將這些隨機(jī)數(shù)依次加到一個(gè)數(shù)組當(dāng)中去,下標(biāo)以0-39這40個(gè)數(shù)字,然后每次你取數(shù)據(jù)的時(shí)候從0-39隨機(jī)產(chǎn)生一個(gè)數(shù)字,然后再通過(guò)這個(gè)數(shù)字做為下標(biāo)再去取對(duì)應(yīng)下標(biāo)的值就可以啦~~~