array_rand() 是 PHP 專門用於從陣列中隨機取出一個或多個鍵名的函數,配合鍵名索引原陣列即可獲取隨機值。本文詳細講解參數、返回值、隨機種子、Banner 輪播、帶鏈接隨機圖片等實戰場景。
mixed array_rand ( array $array [, int $num = 1 ] )
$num = 1:返回單個鍵名(標量)$num > 1:返回鍵名陣列<?php // 設置隨機種子(PHP 4.2+ 可省略,自動播種) srand((float) microtime() * 10000000); $input = ["Neo", "Morpheus", "Trinity", "Cypher", "Tank"]; $rand_keys = array_rand($input, 2); // 取 2 個隨機鍵名 echo $input[$rand_keys[0]] . "\n"; echo $input[$rand_keys[1]] . "\n"; ?>
<?php
srand((float) microtime() * 10000000);
$images = [
1 => '/path/img1.jpg',
2 => '/path/img2.jpg',
3 => '/path/img3.jpg',
4 => '/path/img4.jpg',
5 => '/path/img5.jpg'
];
$rand_key = array_rand($images);
echo '<img src="' . $images[$rand_key] . '">';
?>
<?php
srand((float) microtime() * 10000000);
$banners = [
1 => ['pic' => '/img1.jpg', 'link' => '/link1.php'],
2 => ['pic' => '/img2.jpg', 'link' => '/link2.php'],
3 => ['pic' => '/img3.jpg', 'link' => '/link3.php'],
4 => ['pic' => '/img4.jpg', 'link' => '/link4.php'],
5 => ['pic' => '/img5.jpg', 'link' => '/link5.php']
];
$rand_key = array_rand($banners);
echo '<a href="' . $banners[$rand_key]['link'] . '">';
echo '<img src="' . $banners[$rand_key]['pic'] . '">';
echo '</a>';
?>
<?php
$products = [/* 100 個商品 */];
$rand_keys = array_rand($products, 5); // 一次取 5 個不重複鍵名
foreach ($rand_keys as $key) {
echo $products[$key]['name'] . '<br>';
}
?>
<?php $assoc = ['a' => 'Apple', 'b' => 'Banana', 'c' => 'Cherry']; $keys = array_rand($assoc, 2); $random_subset = array_intersect_key($assoc, array_flip($keys)); print_r($random_subset); // Array ( [b] => Banana [c] => Cherry ) ?>
$arr[$key] 取值array_rand() 同樣支援,返回字符串鍵名array_rand() 內部複製陣列,百萬級陣列建議 array_rand(array_keys($big), $n) 先取鍵名陣列random_int() 或 openssl_random_pseudo_bytes() 替代| 特性 | array_rand() | shuffle() |
|---|---|---|
| 修改原陣列 | 否 | 是 |
| 返回值 | 隨機鍵名 | bool |
| 保持鍵值關聯 | 是 | 否(重置數字索引) |
| 適用場景 | 抽樣、保持關聯 | 打亂順序、洗牌 |
array_rand() 是 PHP 陣列隨機抽樣的標準工具,掌握「返回鍵名」這一核心特性,即可靈活應對 Banner、推薦、抽獎等各類隨機展示需求。