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


Why doesn't array_rand work when I request only one item?

以下操作正常:

<?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不工作?

从手册:

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

因此:

  • 当只获得一个随机条目时,您只需使用$input[$rand_key]
  • 当获得多个随机条目时,您使用$input[$rand_key[0]](或其他索引,直至拔出的随机键数)

From php docs:

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

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

如果您阅读文档,它说明如果您只请求一个项,它返回索引,如果您请求多个项,它返回索引数组。

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

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