Je construis un site Web qui affichera de manière aléatoire une liste Yelp à chaque actualisation de la page. L'API de recherche Yelp renvoie 20 annonces dans un tableau. En ce moment, j'utilise la fonction PHP Rand (0,19) pour générer une liste aléatoire chaque fois que la page est actualisée ($ business [Rand (0,19)]].
Quelqu'un peut-il me référer à une méthode plus intelligente pour randomiser? Je souhaite afficher les 20 annonces une fois avant qu’aucune d’entre elles ne soit répétée. Quelle est la méthode préférée pour traiter ce problème?
la réponse ci-dessous ne fonctionne pas car les nombres sont recréés chaque fois que j'actualise la page. Je suppose que j'ai besoin de stocker les numéros que j'ai déjà utilisés?
$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/>";
?>
La solution la plus simple:
$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
?>
Question similaire: # 5612656
Codepad: http://codepad.org/cBaGHxFU
Mettre à jour:
Vous obtenez toutes les listes dans un tableau appelé $businesses
.
Lorsque cela est terminé, vous aurez affiché toutes les 20 annonces à la fois.
J'espère que cela t'aides!
Je voudrais essayer ceci via la boucle while:
<?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>";