trie sur tableau a plusieurs colonne

Invité
Invité n'ayant pas de compte PHPfrance

05 févr. 2010, 17:38

Bonjour,

je fais un tableau de cette manière :
$tab[$i] = array( 
'mat'=>$ree[0], 
'dat'=>$ree[1], 
'charg'=>$ree[2], 
'com'=>$ree[3], );
}
je souhaite faire un trie, mais lorsque je fais :
array_multisort(charg, SORT_ASC,  com, SORT_ASC);
rien ne change ?

Y a t il un autre moyen ?

merci

Eléphant du PHP | 453 Messages

06 févr. 2010, 09:02

Hello,

Avec si peu de données, pas facile de t'aider. Cependant, je pense savoir pourquoi tu n'as pas le résultat attendu.

<mode hypothese="on">
Simple erreur de logique et de syntaxe... Je crois que tu veux dire ceci :
array_multisort($tab["charg"], SORT_ASC,  $tab["com"],  SORT_ASC);
ou
array_multisort($tab, SORT_ASC);
Logiquement, $tab devrait plutôt être comme cela et ne devrait pas être dans une boucle :
$tab = array(
'mat'=>$mat,
'dat'=>$dat,
'charg'=>$charg,
'com'=>$com, );
</mode>

À moins que tu gardes secrètement l'application que tu es en train de faire, je crois qu'il serait intéressant de mettre un peu plus sur le forum. Je crois que ton script est bancal.

Bonne journée à toi
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Invité
Invité n'ayant pas de compte PHPfrance

08 févr. 2010, 10:32

Bonjour,
j'extrais juste les données de ma base, et je l'ai met dans un tableau, quand je fais un print_r, mon tableau s'affiche bien comme il faut, sauf qu'il faut que je trie selon 2 colonnes. Je ne peux pas le faire auparavant dans ma requête, car j'extrais selon des critères bien particulier.


voici un extrait de que cela m'affiche :
Array ( [mat] => AD101 [dat] => 2010-01-01 [charg] => Vanessa [com] => 2 ) Array ( [mat] => AD111 [dat] => 2010-01-01 [charg] => Jessie [com] => 3 ) Array ( [mat] => AD112 [dat] => 2009-11-01 [charg] => Jessie [com] => 3 ) Array ( [mat] => AD113 [dat] => 2010-01-01 [charg] => Jessie [com] => 3 ) 
donc j'ai tester pour trier :
array_multisort(charg, SORT_ASC,  com, SORT_ASC);
ou
array_multisort($tab["charg"], SORT_ASC,  $tab["com"],  SORT_ASC);
mais cela ne change rien à mon affichage.

Eléphant du PHP | 453 Messages

08 févr. 2010, 12:14

Hello,
Bonjour,
j'extrais juste les données de ma base, et je l'ai met dans un tableau, quand je fais un print_r, mon tableau s'affiche bien comme il faut, sauf qu'il faut que je trie selon 2 colonnes. Je ne peux pas le faire auparavant dans ma requête, car j'extrais selon des critères bien particulier.
[...]
Hum, je suis curieux de voir ta requête.
SELECT * FROM une_table WHERE un_champ > 1 OR un_autre_champ = "une valeur" ORDER BY un_champ, un_autre_champ; 
#un_autre_champ sera trier en fonction de un_champ.
Et en php :
$donnees = array(
    array("prenom" => "Ginette" , "taille" => 155),
    array("prenom" => "Olga" , "taille" => 185),
    array("prenom" => "Marcel" , "taille" => 175),
    array("prenom" => "Thérèse" , "taille" => 170),
    array("prenom" => "Susanne" , "taille" => 170),
    array("prenom" => "Charlotte" , "taille" => 171),
);
foreach($donnees as $k => $v){
    $prenom[$k] = $v["prenom"];
    $taille[$k] = $v["taille"];
}

array_multisort($prenom,SORT_ASC,$taille,SORT_ASC,$donnees);
        echo "<pre>";
        print_r($donnees);
        echo "</pre>";
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia