以下操作正常:
<?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>";
?>
这是真正的代码,将只返回数组的一个结果。