如何在包含所有字符串元素的数组上应用 rand() 或其他一些内置函数,以便随机选择一个字符串


How to apply rand() or some other built-in function on an array that contains all string elements in order to randomly select a string?

我有一个以下数组:

$family = array("Amit", "Suresh", "Vinit", "Somesh", "Sagar", "Shriram");

现在我想从上面的数组中随机选择一个名称。

我应该怎么做?

我知道 rand() 函数。即使我尝试了rand($family);但它给了我如下警告:

警告:rand() 期望正好有 2 个参数,1 个在第 7 行的/var/www/project/index.php 中给出

它要求第二个论点。

因此,请有人帮助我从包含所有字符串元素的数组中随机选择一个字符串。

谢谢。

首先阅读文档,例如您正在寻找的确切功能

http://php.net/manual/en/function.array-rand.php

<?php
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "'n";
echo $input[$rand_keys[1]] . "'n";
?>

试试这个

$num = rand(0, count($family)-1);
$family[$num]

rand()函数接受零个或两个参数。参数为零时,它将产生一个介于 0 和 getrandmax() 之间的伪随机整数。否则,它需要两个整数参数minmax,并将生成一个介于 minmax 之间的伪随机整数(包括 )。

正如@Yurich指出的那样,这可能是您想要的。

$num = rand(0, count($family-1));
$family[$num]

说明:rand(0, count($family-1))将生成一个介于 0 和数组中元素数减 1 之间的随机整数。这个数字将存储在$num中,之后用于以"随机"索引访问数组。

// Count the elements    
$count = count($family);
// decrement the count by 1
$count--;
// echo a random item from the array
echo $family[rand(0, $count)];

rand() 不是一个好的选择,对于 PHP 7 来说,有一个更好的选择。见下文:

$family = array("Amit", "Suresh", "Vinit", "Somesh", "Sagar", "Shriram");
if(version_compare(PHP_VERSION,'7.0.0', '<') ) {
    // for PHP < 7
    $rand_name = $family[mt_rand(0, count($family) - 1)];
} else {
    // for PHP >= 7
    $rand_name = $family[random_int(0, count($family) - 1)];
}
$num = rand(0, count($family)-1);
$family[$num]