2011-09-14 18 views
1

以下工作正常:爲什麼當我要求只有一個項目不array_rand工作?

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

+1

在未來,請發表您收到錯誤消息。當你說的是「不起作用」的時候,它不是很有用。我們需要知道*正在發生的事情,無論它是崩潰還是顯示錯誤或返回意想不到的事情。 – meagar

回答

3

php docs

如果你只取出一個,array_rand()返回一個隨機進入的關鍵。否則,它將爲隨機條目返回一組鍵。這樣做是爲了您可以選擇隨機鍵以及數組中的值。

在你的第二個例子中,你只需要1個隨機數,所以它不返回數組。

2

如果您閱讀the documentation,它聲明如果您只請求一個項目,它將返回索引,如果您請求的比它多,它將返回一個索引數組。

6

從手冊:

如果你只取出一個,array_rand()返回一個隨機進入的關鍵。否則,它將爲隨機條目返回一組鍵。

因此:

  • 當只獲得一個隨機項,你只需要使用$input[$rand_key]
  • 當越來越多的隨機項目,您使用$input[$rand_key[0]](或其他指數高達隨機密鑰的數量拉動)
0
<?php 
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank"); 
$rand_keys = array_rand($input); 
echo $input[$rand_keys] . "<br>"; 
?> 

這纔是真正的代碼,將返回只有1陣列的結果。

+0

雖然這是事實,但它並沒有真正回答關於如何OP問爲什麼'array_rand'不按要求工作,只有一個隨機指數 – Chay22

+0

的問題,因爲array_rand不爲1次的結果只工作,如果我們使用隨機指數邏輯,當你想1分的結果,你不需要把所有的隨機指標,因爲你只想1分的結果,所以你只是不喜歡我在這個代碼是,如果你想要一個結果,如果你想多個結果使用隨機做索引希望你現在明白這一點。 – Volcano

相關問題