echo "方法一:";
創(chuàng)新互聯(lián)公司專注于卓尼企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站建設(shè)。卓尼網(wǎng)站建設(shè)公司,為卓尼等地區(qū)提供建站服務(wù)。全流程定制設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
echo "br\n";
$str = "李一,李二,李三,李四,王一,王二,王三,王四,張一,張二,張三,張四"; //某id下的名字字段的全部文字內(nèi)容,設(shè)為變量$str
$temp = explode(",", $str); //以逗號拆分字符串$str,變成數(shù)組$temp
$result = array(); //最終數(shù)組,先初始化下
for($i=0;$i4;$i++){ //循環(huán)4次取隨機名字
$key = rand(0, count($temp)-1);//獲取隨機數(shù)
$result[] = $temp[$key];//通過隨機數(shù)找到$temp數(shù)組中的值,即隨機的名字,賦值給$result數(shù)組
unset($temp[$key]); //把剛才取出的名字從$temp數(shù)組中刪除
sort($temp); //從新排列下$temp數(shù)組的順序,使其鍵值還是從0開始,為下次循環(huán)做準(zhǔn)備
}
echo "結(jié)果為:";
echo "br\n";
print_r($result);
echo "br\n";
echo implode(",", $result);
echo "br\n";
echo "br\n";
echo "方法二:";
echo "br\n";
$str = "李一,李二,李三,李四,王一,王二,王三,王四,張一,張二,張三,張四"; //某id下的名字字段的全部文字內(nèi)容,設(shè)為變量$str
$temp = explode(",", $str); //以逗號拆分字符串$str,變成數(shù)組$temp
$rand_key = array_rand($temp, 4); //從$temp數(shù)組中找出4個隨機的key值
$result = array(); //最終數(shù)組,先初始化下
foreach($rand_key as $val){ //循環(huán)4個鍵值
$result[] = $temp[$val]; //通過鍵值從temp數(shù)組找到對應(yīng)的內(nèi)容,即隨機的名字,賦值給$result數(shù)組
}
echo "結(jié)果為:";
echo "br\n";
print_r($result);
echo "br\n";
echo implode(",", $result);
直接用sql隨機查詢 獲取數(shù)據(jù) 就可以了 SELECT * FROM tablename ORDER BY RAND() LIMIT 10
如果要在這前10條里面隨機顯示一條,可以存到數(shù)組里面,然后隨機輸出,例如:
$rows=array();
while($row=mysql_fetch_array($res)){
$rows[]=$row;
}
$n=rand(0,9);
echo "a href='bbpress/topic.php?id={$rows[$n][topic_id]}'".$rows[$n][topic_title]."/br"."/a";
如果希望直接在數(shù)據(jù)庫里面隨機提取一條記錄,那么方法是修改SQL:
select * from ... order by rand() limit 1
用PHP 隨機函數(shù)
$num = select count(*) from bbs;
$id= mt_rand(1,$num);
然后執(zhí)行 SQL select user,bbs from `bbs` where id = .$id;
為提高效率 最好別用 mysql的 rand()函數(shù)
從數(shù)據(jù)庫讀出來的原始數(shù)據(jù)是資源。還不是數(shù)組。
$result = mysql_Query("select * from tb_admin where parid=1")
while($list = mysql_fetch_array($result)){
print_r($list);//這里輸出的數(shù)組是將原數(shù)組拆開來輸出。
}
原始的數(shù)據(jù)結(jié)構(gòu)應(yīng)是:
array(
[0]=array(
[id]=01
[classname]=我是
[url]=baidu.com
)
[1]=array(
//這里同上,不兩累贅
)
)
//?第一種我測試了一下,需要0.5秒
$map?=?array('id'=?array('exp','?=?(SELECT?FLOOR(?MAX(id)?*?RAND())?FROM?`'.C('DB_PREFIX').'custom_reply_news`?)'));
$dd?=?M("custom_reply_news")-where($map)-order('id')-find();
dump($dd);??
//?第二種查詢時間只有0.01秒
$map?=?array('id'=?array('exp','?=?(SELECT?floor(RAND()?*?(SELECT?MAX(id)?FROM?`'.C('DB_PREFIX').'custom_reply_news`)))'));
$dd?=?M("custom_reply_news")-where($map)-order('id')-find();
dump($dd);??
//?第三種加上了MIN(id)的判斷。我在最開始測試的時候,就是因為沒有加上MIN(id)的判斷,結(jié)果有一半的時間總是查詢到表中的前面幾行。
$map?=?array('id'=?array('exp','?=?(SELECT?floor(?RAND()?*?((SELECT?MAX(id)?FROM?`'.C('DB_PREFIX').'custom_reply_news`)-(SELECT?MIN(id)?FROM?`'.C('DB_PREFIX').'custom_reply_news`))?+?(SELECT?MIN(id)?FROM?`'.C('DB_PREFIX').'custom_reply_news`)))'));
$dd?=?M("custom_reply_news")-where($map)-order('id')-find();
dump($dd);????
//?第四種采用JOIN的語法比直接在WHERE中使用函數(shù)效率還要高很多
$dd?=?M("custom_reply_news?t1")-join('(SELECT?ROUND(RAND()?*?((SELECT?MAX(id)?FROM?`'.C('DB_PREFIX').'custom_reply_news`)-(SELECT?MIN(id)?FROM?`'.C('DB_PREFIX').'custom_reply_news`))+(SELECT?MIN(id)?FROM?`'.C('DB_PREFIX').'custom_reply_news`))?AS?id)?as?t2')
-where("t1.id?=?t2.id")-order('t1.id')-find();
dump($dd);
本文題目:php隨機查詢數(shù)據(jù)結(jié)構(gòu),php中的五種數(shù)據(jù)結(jié)構(gòu)
當(dāng)前地址:http://chinadenli.net/article6/hesgig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站制作、網(wǎng)站策劃、外貿(mào)建站、面包屑導(dǎo)航、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)