2011-09-14 8 views
1

以下が正常に動作します。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()されている場合は、ランダムなエントリのキーを返します。それ以外の場合は、ランダムエントリのキーの配列を返します。これは、ランダムキーとアレイの値を選択できるように行われます。

2番目の例では、1つのランダムしか必要ないので、配列を返しません。

2

the documentationを読むと、アイテムを1つだけ要求するとインデックスが返され、それ以上の値を要求するとインデックスの配列が返されます。マニュアルから

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がなぜランダムなインデックス – Chay22

+0

へのリクエストで 'array_rand'が要求に応じて動作しないのかという疑問に答えることは実際にはありません。論理的に1つの結果が必要なときは、1つの結果だけが必要なので、すべてのランダムなインデックスを入れる必要はありません。インデックスはこれがあなたにとって今はっきりしていることを願っています。 – Volcano

関連する問題