[PHP] Trier 3 valeurs

Nico -  
 Alain42 -
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. Alain42
     
    bonsoir

    essayes:

    $result[] = $_SESSION['val1'];
    $result[] = $_SESSION['val2'];
    $result[] = $_SESSION['val3'];
    rsort($result);
    $aff="";
    foreach ($result as $value) {
    $aff.=$value;
    } 
    echo "Resultat: ".$aff;
    
    0
  2. Nico
     
    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
    0
  3. Alain42
     
    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
    0
  4. Nico
     
    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!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Nico
     
    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..
    0
  7. Alain42
     
    Bonsoir,

    si tu veux que result soit un tableau:

    $result = array($_SESSION['val1'] , $_SESSION['val2'] , $_SESSION['val3']); 
    0
  8. Alain42
     
    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;
    ?>
    
    0