首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP array_rand() 高效隨機抽取指定筆數記錄演算法

     編輯:PHP 綜合知識

核心函數:array_rand()

array_rand() 可從陣列中隨機取出一或多個鍵名,語法如下:

mixed array_rand(array $input[, int $num_req])
  • $input:輸入陣列
  • $num_req:要取出的單元數量(預設為 1)

回傳值:若只取一個,回傳該鍵名;取多個則回傳包含隨機鍵名的陣列。

基本範例

<?php
srand((float) microtime() * 10000000);
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
print $input[$rand_keys[0]] . "\n";
print $input[$rand_keys[1]] . "\n";
?>

資料庫隨機抽取 10 筆記錄實作

<?php
// 從資料庫撈取符合條件的資料
$list = $DB->where("status=1 and flag=1")->order('sort')->select();
unset($Case);

$count = count($list);
// 建立索引陣列 0 到 $count-1
$rand_list = range(0, $count - 1);
// 從索引陣列隨機抽取 10 個鍵名
$rand_list = array_rand($rand_list, 10);

$tuijian_array = array();
foreach ($rand_list as $key) {
    $tuijian_array[] = $list[$key];
}
unset($case_list);
print_r($tuijian_array);
?>

適用場景

  • 隨機推薦商品/文章
  • 抽獎程式
  • 隨機展示廣告
  • 測試資料抽樣

優點:不需將大量資料載入記憶體即可隨機抽樣,效能優於 ORDER BY RAND()。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved