当我只请求一个项目时,为什么array_rand不起作用?

时间:2011-09-14 17:40:57

标签: php arrays random key echo

以下工作正常:

<?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";
?>

但这不是:

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

当我只请求一个随机索引时,为什么array_rand不起作用?

4 个答案:

答案 0 :(得分:6)

从手册:

  

如果只选择一个条目,array_rand()将返回随机条目的键。否则,它返回随机条目的键数组。

因此:

  • 当只获得一个随机条目时,您只需使用$input[$rand_key]
  • 获取多个随机条目时,使用$input[$rand_key[0]](或其他索引,最多可拉出随机密钥数)

答案 1 :(得分:3)

来自php docs

  

如果只选择一个条目,array_rand()将返回随机条目的键。否则,它返回随机条目的键数组。这样做是为了您可以从数组中选择随机键和值。

在你的第二个例子中,你只想要1个随机,所以它不会返回一个数组。

答案 2 :(得分:2)

如果您阅读the documentation,它会声明如果您只请求一个项目,它会返回索引,如果您请求的数量超过该值,它将返回一个索引数组。

答案 3 :(得分:0)

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

这是真正的代码,它只返回数组的1个结果。