以下工作正常:
<?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
不起作用?
答案 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个结果。