Dites ce tableau:
Utilisateur p> J'ai besoin de boucler à travers tous les partisans des utilisateurs et choisissez ceux avec un score supérieur à 5000. J'utilise une boucle tandis que p> tandis que lorsque l'instruction fonctionnera et affichera p> mais ce que je veux seulement afficher une d'eux au hasard. Comment puis-je limiter une seule ligne à afficher? P> p>
4 Réponses :
Cela n'échora que le premier utilisateur avec un score égal ou supérieur à 5000:
while($user = $user_result->fetch_assoc()) { if($user['highest_score'] >= 5000) { echo $user['username']; break; } }
Pourquoi ne pas simplement imprimer le premier, puis sortir de la boucle?
Comment $ $ lastuser = $ utilisateur ['nom d'utilisateur']; code> BRIEFER que
Break; code>?
Mise à jour de la réponse.
Voici comment ça se fait. Vous avez d'abord besoin de mettre les gagnants dans un nouveau tableau, puis choisissez un numéro aléatoire pour choisir un lecteur aléatoire.
<?php $user[] = ["id" => 1, "username" => "detectivepikachu", "highest_score" => 1000]; $user[] = ["id" => 2, "username" => "fullmetaljacket", "highest_score" => 4000]; $user[] = ["id" => 3, "username" => "sonicthegreat", "highest_score" => 8000]; $user[] = ["id" => 4, "username" => "inspectorgadget", "highest_score" => 2000]; $user[] = ["id" => 5, "username" => "themartian", "highest_score" => 8000]; $nb_user = count($user); $array_score = array(); while($nb_user > 0){ $nb_user--; if($user[$nb_user]['highest_score'] >= 5000){ $array_score[] = [$user[$nb_user]['username']]; } } $rand = rand(0, count($array_score) -1); echo $array_score[$rand][0];
Les autres réponses ne choisissent pas l'un des résultats de manière aléatoire, c'est ainsi que vous pouvez le faire choisir une seule.
boucle via tous vos utilisateurs et ajouter des utilisateurs ayant un score supérieur à 5000 à un tableau. P>
$high_scores = array(); //foreach instead of while is better for arrays //or you can use while($user = $user_result->fetch_assoc()){ foreach($users as $user) { if($user['highest_score'] >= 5000) { $high_scores[] = $user; } } //choose a random number between 0 and the amount of highscores (-1 to account for arrays starting at 0) echo $high_scores[rand(0, count($high_scores)-1)]['username'];
Vous pouvez simplement sortir du pendant que code> en boucle après l'impression.
while($user = $user_result->fetch_assoc()){
if($user['highest_score'] >= 5000){
echo $user['username'];
echo '<br>';
break;
}
}
Bien dans votre réponse, cela le fait dans la requête immédiate qui n'est pas ce que j'essaie de faire. J'essaie de le faire dans la déclaration tandis que cela a même du sens pour le faire comme ça.
Vous pouvez charger ces utilisateurs dans un tableau à l'intérieur de votre
pendant code>, puis choisissez un élément de tableau aléatoire a > Afficher (si vous vouliez faire cela sur le côté PHP). Je ferais cela dans SQL, cependant, comme
Sélectionnez Nom d'utilisateur à partir de Tableau dans lequel le plus haut_score> 5000 commande par Rand () limite 1; code> et il suffit d'afficher le nom d'utilisateur est retourné.