2016-09-26 7 views
1

Ich habe ein Array mit Werten,PHP - Wie Werte in Array zeigen, zufällig

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

ich sie zufällig

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)]; 

Aber auf diese Weise unter Verwendung zeigen kann, kann ein Mitglied zweimal auftauchen oder sogar mehr! Was ist die korrekte und professionelle Art, sie nur einmal zufällig zu zeigen?

+2

'shuffle ($ Mitglieder); foreach ($ members als $ member) {echo $ member; } 'Shuffle wird die Reihenfolge der Elemente in einem Array zufällig verändern: [Shuffle()] (http://php.net/manual/en/function.shuffle.php) – icecub

Antwort

1

Wenn Sie das gesamte Array in zufälliger Reihenfolge verwenden möchten, verwenden Sie shuffle.

shuffle($member); 

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

Wenn Sie ein auswählen möchten oder mehr Elemente aus dem Array zufällig Verwendung array_rand.

Nehmen wir an, Sie möchten 3 Mitglieder aus dem Array zufällig auswählen, mit der Garantie, dass Sie niemals zweimal den gleichen Array-Wert auswählen.

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

Eigentlich habe ich nur den Namen der OPs-Variablen aus Gründen der Konsistenz verwendet , aber ich habe '$ members' im zweiten Beispiel anstelle von '$ member' verwendet. Vielen Dank. – Sherif

1

Eine andere Wahl,

$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

Beachten Sie, dass bei dieser Vorgehensweise die Reihenfolge der Elemente in "$ member" identisch ist, da "array_rand" Ihnen eine zufällige Auswahl und keine zufällige Verteilung gibt. Wenn Sie also das gesamte Array in zufälliger Reihenfolge verwenden möchten, ist es besser, 'shuffle' zu ​​verwenden. Wenn Sie jedoch eine zufällige Zufallsauswahl und keine zufällige Verteilung wünschen, funktioniert' array_rand' problemlos. Außerdem benutzen Sie 'echo $ a [[$ random_keys [0]]' wenn es echo $ member [$ random_keys [0]] 'sein soll. – Sherif

+0

@Sherif Vielen Dank für Ihren Kommentar. Sie haben recht ... Wenn wir das gesamte Array in zufälliger Reihenfolge anordnen wollen, ist es besser, 'shuffle' zu ​​verwenden. Wir können 'array_rand' verwenden, wenn wir die Zufallsauswahl einschränken wollen. – Naga

+0

Es muss nicht begrenzt werden. Ich weise nur darauf hin, dass es eine zufällige Auswahl und keine zufällige Verteilung ist. d. h. du könntest 'shuffle ($ random_keys)' 'wenn du willst. Ich bin vielleicht mit meinen Formulierungen ein wenig mehrdeutig gewesen. Mit limited meine ich, dass 'array_rand()' die Auswahl auf die Menge der verfügbaren Schlüssel beschränkt. So dass Sie den gleichen Schlüssel nie zweimal bekommen. – Sherif