首頁  >  文章  >  php教程  >  php快速得到大數組裡的隨機小數組

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

大家讲道理
大家讲道理原創
2016-11-11 09:45:291307瀏覽

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

先透過資料庫查詢,得到前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倍。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn