用PHP 隨機函數(shù)
成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、岳陽網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城網(wǎng)站制作、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為岳陽等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
$num = select count(*) from bbs;
$id= mt_rand(1,$num);
然后執(zhí)行 SQL select user,bbs from `bbs` where id = .$id;
為提高效率 最好別用 mysql的 rand()函數(shù)
你可以直接在sql 里寫隨機 select name from users where state='1' and weiname!='' and imageurl!='' and sex!='' order by rand() limit...
那要看你怎么篩選了, 如果是在統(tǒng)一方法里面循環(huán)篩選的話,那就把篩選出來的賦值到一個數(shù)組里面 然后再次篩選出來的時候就去匹配,如果有就不動,沒有就再賦值到數(shù)組里。
如果是不同的方法,那就用session或者單獨建個表去保存隨機出的數(shù)據(jù)中的標(biāo)識,再然后還是匹配
/**
*?MySQL?隨機取記錄
*?
*?@param?$t?表
*?@param?$c?ID列,默認(rèn)為id
*?@param?$n?取多少個
*?@param?$w?條件語句
*?@param?$f?bool?是否強制以多維數(shù)組形式返回,默認(rèn)false
*?@return?array?取1個直接返回結(jié)果數(shù)組(除非$f為true),取1個返回多維數(shù)組,用foreach取出
*/
function?rand_row($t?,?$c?=?'id'?,?$n?=?'1',?$w?=?''?,?$f?=?false)?{
$m=new?mysqli(mysqli信息,自行查找php文檔);
if?(!empty($w))?{
$w?=?'?AND?'.$w;
}
$sql?=?"SELECT?*?FROM?`{$t}`?WHERE?{$c}?=?(SELECT?floor(RAND()?*?(SELECT?MAX({$c})?FROM?`{$t}`)))?{$w}?ORDER?BY?{$c}?LIMIT?{$n};";
$xq??=?$m-query($sql);
$r???=?array();
while?($x?=?$m-fetch_array($xq))?{
$r[]?=?$x;
}
if?($f?==?false??count($r)?==?1)?{
return?$r[0];
}?else?{
return?$r;
}
}
array_rand()
在你想從數(shù)組中取出一個或多個隨機的單元時相當(dāng)有用。它接受
input
作為輸入數(shù)組和一個可選的參數(shù)
num_req,指明了你想取出多少個單元
-
如果沒有指定,默認(rèn)為
1。
如果你只取出一個,array_rand()
返回一個隨機單元的鍵名,否則就返回一個包含隨機鍵名的數(shù)組。這樣你就可以隨機從數(shù)組中取出鍵名和值。
主要是用array_rand()方法