我有一个以下数组:
$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()
之间的伪随机整数。否则,它需要两个整数参数min
和max
,并将生成一个介于 min
和 max
之间的伪随机整数(包括 )。
正如@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]