ZetCode

PHP array_rand 函数

最后修改于 2025 年 3 月 13 日

PHP 的 array_rand 函数可以从数组中选取一个或多个随机键。它在不打乱顺序的情况下选择随机元素非常有用。

基本定义

array_rand 函数返回数组中的随机键。默认情况下,它返回一个键。您可以指定要返回多少个键。

语法:array_rand(array $array, int $num = 1): int|string|array。该函数为单个选择返回一个键或多个选择返回一个键数组。

基本 array_rand 示例

这显示了如何从颜色数组中获取一个随机键。

basic_array_rand.php
<?php

$colors = ["red", "green", "blue", "yellow", "orange"];
$randomKey = array_rand($colors);

echo "Random color: " . $colors[$randomKey];

这会从颜色数组中选取一个随机键。该键用于访问和显示相应的颜色值。每次运行可能会显示不同的颜色。

获取多个随机元素

您可以通过提供第二个参数来指定要返回多少个随机键。

multiple_elements.php
<?php

$fruits = ["apple", "banana", "cherry", "date", "elderberry"];
$randomKeys = array_rand($fruits, 3);

echo "Random fruits:\n";
foreach ($randomKeys as $key) {
    echo $fruits[$key] . "\n";
}

这会从水果数组中选取三个随机键。这些键以数组形式返回,然后我们使用它们来访问和显示相应的 names。

使用关联数组

array_rand 可以与关联数组一起使用,返回随机键。

associative_array.php
<?php

$capitals = [
    "France" => "Paris",
    "Germany" => "Berlin",
    "Italy" => "Rome",
    "Spain" => "Madrid"
];

$randomCountry = array_rand($capitals);
echo "Random capital: $capitals[$randomCountry] of $randomCountry";

这会从关联数组中选取一个随机键(国家名称)。然后我们使用随机选取的键显示国家名称和其首都。

处理边缘情况

当请求的元素多于存在的元素时,array_rand 会发出警告。

edge_case.php
<?php

$letters = ["a", "b", "c"];

// This will trigger a warning if uncommented:
// $randomKeys = array_rand($letters, 5);

// Safe approach:
$count = min(3, count($letters));
$randomKeys = array_rand($letters, $count);

print_r($randomKeys);

这演示了如何处理请求的元素可能多于可用元素的情况。安全的方法会将请求限制在数组的实际大小内。

设置种子以获得可重现的结果

为了测试,您可以设置随机数生成器的种子以获得一致的结果。

seeding_random.php
<?php

$items = ["rock", "paper", "scissors"];

// Seed the random number generator for reproducible results
mt_srand(42);
$firstRun = array_rand($items);

mt_srand(42); // Reset with same seed
$secondRun = array_rand($items);

echo "First run: $items[$firstRun]\n";
echo "Second run: $items[$secondRun]\n"; // Same as first run

通过用相同的值设置随机数生成器的种子,我们获得了相同的“随机”结果。这对于测试很有用,但不应在生产环境中使用。

最佳实践

来源

PHP array_rand 文档

本教程通过实际示例介绍了 PHP array_rand 函数,展示了其在选择随机数组元素方面的用法。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 数组函数