2016-09-26 13 views
1

私はランダムにPHP - ランダム

echo $member[rand(1,5)]; 
echo $member[rand(1,5)]; 
echo $member[rand(1,5)]; 
echo $member[rand(1,5)]; 
echo $member[rand(1,5)]; 

しかし、この方法を使用して、私はそれらを表示することができ

$member[1] = "John"; 
$member[2] = "Mary"; 
$member[3] = "Berry"; 
$member[4] = "James"; 
$member[5] = "Lincoln"; 

値を持つ配列を持つ配列の値を表示する方法、メンバーが二回表示することができますかさらに! ランダムに1回だけ表示する、正確でプロフェッショナルな方法は何ですか?

+2

'シャッフル($メンバー)。 foreach($ memberとしての$ members){echo $ member; }シャッフルは配列内の要素の順序をランダム化します:[Shuffle()] – icecub

答えて

1

アレイ全体をランダムな順序で使用する場合は、shuffleを使用してください。

shuffle($member); 

foreach($member as $memberName) { 
    echo $memberName; 
} 

あなたがランダムに使用array_randの配列から1つのまたは複数の要素を選択します。

ランダムに配列から3つのメンバーを選択したいとします。同じ配列値を2度決して使用しないことを保証します。

foreach(array_rand($member, 3) as $key) { 
    echo $member[$key]; 
} 
+1

実際には、一貫性のためにOP変数名を使用していましたしかし、 '$ member'の代わりに' $ members'を使用しました。ありがとう。 – Sherif

1

もう一つの選択肢、

$random_keys=array_rand($member,count($member)); 
echo $member[$random_keys[0]]; 
echo $member[$random_keys[1]]; 
echo $member[$random_keys[2]]; 
echo $member[$random_keys[3]]; 
echo $member[$random_keys[4]]; 
+1

'array_rand'はランダムな分布ではなくランダムな選択を与えるので、これは' $ member'の要素の順番と同じ結果を与えることに注意してください。だから、配列全体をランダムな順序で使いたいときは、 'shuffle'を使うほうが良いですが、ランダムな分布ではなくランダムな選択をしたい場合は、' array_rand'がうまくいきます。また、 'echo $ member [$ random_keys [0]]'のときに 'echo $ a [[$ random_keys [0]]'を使用しています。 – Sherif

+0

@Sherifご意見ありがとうございます。あなたは正しいのです...配列全体をランダムな順序で並べ替える場合は、 'shuffle'を使うほうが良いでしょう。ランダムな選択を制限したいときは 'array_rand'を使うことができます。 – Naga

+0

これに限定されるものではありません。私はそれがランダムな選択であり、ランダムな分布ではないことを指摘しています。つまり、あなたが望むなら、 'shuffle($ random_keys)'することができます。私は言葉で少しあいまいかもしれません。限られた意味では、 'array_rand()'は選択肢を利用可能なキーの集合に限定します。あなたは決して同じ鍵を二度入手することはありません。 – Sherif