[PHP] Trier 3 valeurs

Fermé
Nico - 7 nov. 2007 à 19:38
 Alain42 - 8 nov. 2007 à 18:40
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.
A voir également:

7 réponses

bonsoir

essayes:

$result[] = $_SESSION['val1'];
$result[] = $_SESSION['val2'];
$result[] = $_SESSION['val3'];
rsort($result);
$aff="";
foreach ($result as $value) {
$aff.=$value;
} 
echo "Resultat: ".$aff;
0
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Bonsoir,

si tu veux que result soit un tableau:

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