[PHP] Trier 3 valeurs

Bonjour,

je souhaite trier 3 valeurs que je récupère par des sessions :

--------
$_SESSION['val1']
$_SESSION['val2']
$_SESSION['val3']
Ces trois variables contiennent 1 chiffre de 1 à 6.

Je souhaites les classer par ordre décroissant , exemple :

$_SESSION['val1'] = 2
$_SESSION['val2'] = 4
$_SESSION['val3'] = 1

J'affiche 421.
--------
j'ai essayé ceci :

$result[] = $_SESSION['val1'];
$result[] = $_SESSION['val2'];
$result[] = $_SESSION['val3'];
rsort($result);
foreach ($result as $value) {
switch($value) {
case '421':return 421 . "montexte";
default:return $value;
}
}

Cela m'affiche bien le plus grand des 3 chiffres donc "4" mais pas "421"

Quelqu'un a une idée ?

Merci.
Configuration: Windows XP
Firefox 2.0.0.9

7 réponses

  1. bonsoir

    essayes:

    $result[] = $_SESSION['val1'];
    $result[] = $_SESSION['val2'];
    $result[] = $_SESSION['val3'];
    rsort($result);
    $aff="";
    foreach ($result as $value) {
    $aff.=$value;
    } 
    echo "Resultat: ".$aff;
    
    1. bonsoir,

      cela ne change rien, il m'affiche toujours 4 au lieu de 421 ..
      D'ailleurs je n'ai pas compris quel était l'intérêt de $aff ?

      Merci tout de même pour la réponse
      1. Bonsoir,

        Pourtant ça devrait fonctionner

        pour voir si l'array est bien chargé avec les valeurs, tu essayes:

        $result[] = $_SESSION['val1'];
        $result[] = $_SESSION['val2'];
        $result[] = $_SESSION['val3'];
        // visualisation du contenu de l'array $result pour verifier que tu as bien les valeurs 1  2   4
        // tu devrait avoir Array(0=>1
        //                          1=>2
        //                         2=>4)
        echo "<pre>";
        print_r($result);
        echo "</pre>";
        
        //
        
        rsort($result);
        $aff="";
        foreach ($result as $value) {
        $aff.=$value;
        } 
        echo "Resultat: ".$aff;
        


        la variable $aff permet de concatener les valeurs dans la boucle avant de les afficher par un echo
        1. Bonjour,
          ne change rien .. il m'affiche toujours "4" et non pas "421".
          le --- print_r($result); ---- retourne bien mon tableau avec mes 3 valeurs donc ça c'est OK.
          Ca doit venir de ma boucle ..

          C'est pas grave, je te remercie de ton aide.
          j'affiche les nombres non triés tant pis!
          1. le seul moyen que je vois c'est de faire :

            $result = $_SESSION['val1'] . $_SESSION['val2'] . $_SESSION['val3'];

            et il faudrait que je fasse un sort($result);

            mais il me jette car ce n'est pas un tableau..
            1. Bonsoir,

              si tu veux que result soit un tableau:

              $result = array($_SESSION['val1'] , $_SESSION['val2'] , $_SESSION['val3']); 
              1. Re bonsoir,

                je viens de faire un petit script de test qui marche parfaitement chez moi, essayes le:

                <?php
                $result[] = 1;
                $result[] = 2;
                $result[] = 4;
                echo "<pre>";
                print_r($result);
                echo "</pre><br>";
                rsort($result);
                $aff="";
                foreach ($result as $value) {
                $aff.=$value;
                } 
                echo "Resultat: ".$aff;
                ?>