首頁 > php教程 > PHP源码 > 主體

php快速得到大數組裡的隨機小數組

大家讲道理
發布: 2016-11-11 09:45:29
原創
1320 人瀏覽過

有個猜用戶喜歡的功能,用戶可以點擊換一組,來刷新推薦的內容。

先透過資料庫查詢,得到前1000條數據,然後隨機移除4條。

程式寫完之後,發現運行的很慢,每次刷新,都要等很久才出來。

程式碼如下:

$arr = range(1, 100000);
$start = time();
for($i = 0; $i < 100; $i ++){
    $key = mt_rand(0, 99999 - $i);
    $result[] = $arr[$key];
    unset($arr[$key]);
    sort($arr);
}
$end = time();
echo $end - $start;
登入後複製

上面的寫法,用unset之後,必須進行排序。

unset只會刪除鍵值,而key會保留。

經過改進之後的寫法如下:

$arr = range(1, 100000);
$start = time();
for($i = 0; $i < 100; $i ++){
    $key = mt_rand(0, 99999 - $i); 
    $result[] = array_splice($arr, $key, 1);
}
$end = time();
echo $end - $start;
登入後複製

效率提高了3-4倍。

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板