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

Php 如何在包含所有字符串元素的数组上应用rand()或其他内置函数,以便随机选择字符串?,php,arrays,string,random,compiler-warnings,Php,Arrays,String,Random,Compiler Warnings,我有以下数组: $family = array("Amit", "Suresh", "Vinit", "Somesh", "Sagar", "Shriram"); 现在我想从上面的数组中随机选择一个名称 我该怎么做 我知道rand()函数。甚至我也尝试了兰德($family)但它给了我如下警告: 警告:rand()需要两个参数,第7行的/var/www/project/index.php中给出了一个参数 这是在要求第二个论点 所以请有人帮我从包含所有字符串元素的数组中随机选择一个字符串 谢谢

我有以下数组:

$family = array("Amit", "Suresh", "Vinit", "Somesh", "Sagar", "Shriram");
现在我想从上面的数组中随机选择一个名称

我该怎么做

我知道rand()函数。甚至我也尝试了兰德($family)但它给了我如下警告:

警告:rand()需要两个参数,第7行的/var/www/project/index.php中给出了一个参数

这是在要求第二个论点

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

谢谢

试试这个

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

$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
中,之后将使用它以“随机”索引访问数组。

函数的
rand()
参数为零或两个。如果参数为零,它将生成一个介于0和
getrandmax()
之间的伪随机整数。否则,它需要两个整数参数
min
max
,并将生成一个介于
min
max
之间的伪随机整数

正如@Yurich所指出的,这可能是你想要的

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

rand()不是一个好选项,对于PHP7有一个更好的选项。见下文:

$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)];
}
$family=array(“Amit”、“Suresh”、“Vinit”、“Somesh”、“Sagar”、“Shriram”);
if(version_compare)(PHP_version,'7.0.0','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)];
}
$family=array(“Amit”、“Suresh”、“Vinit”、“Somesh”、“Sagar”、“Shriram”);

如果(version_compare)(PHP_version,'7.0.0',下面的所有答案都可以使用,array_rand是一个内置函数。但是,根据我的经验,如果您想要更精确的统计结果,您需要使用mt_rand()而不是rand()@Devon:谢谢你提供的信息,但如果你能借助一些有用的例子来证明这个想法并将其作为答案发布,那就太好了。谢谢。拿下面的rand()例子,用mt_rand()替换rand()。测试一下,你就会明白我关于统计准确性的意思。rand()倾向于使用某些数字。下面的所有答案都可以,array_rand是一个内置函数。但是,根据我的经验,如果您想要更精确的统计结果,您需要使用mt_rand()而不是rand()@Devon:谢谢你提供的信息,但如果你能借助一些有用的例子来证明这个想法并将其作为答案发布,那就太好了。谢谢。拿下面的rand()例子,用mt_rand()替换rand()。测试一下,你就会明白我关于统计准确性的意思。rand()倾向于使用某些数字。Array_rand()似乎是一个不错的选择,但由于它基于基于偏颇的libc rand()函数,因此它不是一个好的数组随机选取器。请检查您指出的文档中的注释。使用my_rand()或random_int(),如果您有php 7,请使用my_rand()或random_int()。详细信息请查看我的答案Sarray_rand()这似乎是一个不错的选择,但由于它基于基于偏颇的libc-based rand()函数,因此它并不是一个好的数组随机选取器。请检查您指出的文档中的注释。使用my_rand()或random_int()检查您的php 7。有关详细信息,请查看我的答案