0
votes

Comment imprimer seulement une rangée de la table dans un moment où la déclaration?

Dites ce tableau:

Utilisateur xxx

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 xxx

tandis que lorsque l'instruction fonctionnera et affichera xxx

mais ce que je veux seulement afficher une d'eux au hasard. Comment puis-je limiter une seule ligne à afficher?


2 commentaires

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 , puis choisissez un élément de tableau aléatoire 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; et il suffit d'afficher le nom d'utilisateur est retourné.


4 Réponses :


0
votes

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;
    }
}


3 commentaires

Pourquoi ne pas simplement imprimer le premier, puis sortir de la boucle?


Comment $ $ lastuser = $ utilisateur ['nom d'utilisateur']; BRIEFER que Break; ?


Mise à jour de la réponse.



0
votes

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


0 commentaires

0
votes

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


0 commentaires

0
votes

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;
    }
}


0 commentaires