Ich baue eine Website, die bei jeder Aktualisierung der Seite zufällig eine Yelp-Auflistung anzeigt. Die Yelp-Such-API gibt 20 Einträge in einem Array zurück. Im Moment verwende ich die Funktion Rand (0,19) von PHP, um bei jeder Aktualisierung der Seite eine zufällige Auflistung zu generieren ($ business [Rand (0,19)]).
Kann mich jemand auf eine intelligentere Methode zur Zufallsgenerierung verweisen? Ich möchte alle 20 Einträge einmal anzeigen, bevor sie wiederholt werden. Was ist die bevorzugte Methode, um dieses Problem zu lösen?
die unten stehende Antwort funktioniert nicht, da die Zahlen jedes Mal neu erstellt werden, wenn ich die Seite aktualisiere. Ich schätze, ich muss speichern, welche Nummern ich bereits verwendet habe.
$numbers = range(0, 19);
shuffle($numbers);
// Handle Yelp response data
$response = json_decode($data);
$RANDOM = Rand(1,19);
$business = $response->businesses;
echo "<img border=0 src='".$business[$RANDOM]->image_url."'><br/>";
echo $business[$RANDOM]->name."<br/>";
echo "<img border=0 src='".$business[$RANDOM]->rating_img_url_large."'><br/>";
?>
Einfachste Lösung:
$numbers = range(1, 20);
shuffle($numbers);
Alternative:
<?php
function randomGen($min, $max, $quantity) {
$numbers = range($min, $max);
shuffle($numbers);
return array_slice($numbers, 0, $quantity);
}
print_r(randomGen(0,20,20)); //generates 20 unique random numbers
?>
Ähnliche Frage: # 5612656
Codepad: http://codepad.org/cBaGHxFU
Update:
Sie erhalten alle Einträge in einem Array mit dem Namen $businesses
.
Wenn dies abgeschlossen ist, haben Sie alle 20 Einträge auf einmal angezeigt.
Hoffe das hilft!
Ich würde das über while-Schleife versuchen:
<?php
$i = 0;
$arr = array();
while($i<10){
$num = Rand(1, 12);
$c = 0;
echo $num . "<br>";
for($j=0; $j<4; $j++){
if($arr[$j] == $num){
$c++;
break;
}
}
if($c==0){
$arr[$i] = $num;
$i++;
}
}
echo "<pre>";
print_r($arr);
echo "</pre>";