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

e2ex 9年前發布 | 764 次閱讀 PHP

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

先通過數據庫查詢,得到前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倍。

 本文由用戶 e2ex 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!