array_rand() 可從陣列中隨機取出一或多個鍵名,語法如下:
mixed array_rand(array $input[, int $num_req])
回傳值:若只取一個,回傳該鍵名;取多個則回傳包含隨機鍵名的陣列。
<?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";
?>
<?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()。