Tri un tableau associatif

Par jvnet, il y a 9 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.
je souhaite savoir comment faire un trie croissant ou par ordre alphabétique d'un tableau associatif.
Apres un print_r
j'obtiens ceci :

Array ( [0] => Array ( [fournisseur1] => 'vente de tomate fr1' ) [1] => Array ( [fournisseur4] => 'vente fraise fr4' ) [2] => Array ( [fournisseur2] => 'vente de piment fr2' ) [3] => Array ( [fournisseur8] => 'vente de patate fr8' ) [4] => Array ( [fournisseur7] => 'vente de banane fr4' ) [5] => ....

Ce que je veux

je souhaite avoir un trie par fournisseur, bien sûr, en gardant les données qui correpondent.
example :

[fournisseur1] => 'vente de tomate fr1' [fournisseur2] => 'vente de piment fr2' [fournisseur4] => 'vente fraise fr4' ...

j'ai essayé :

array_multisort($Montab, SORT_ASC, SORT_REGULAR);

Aucun succès.

Merci pour votre lumière.

5 réponses

Huggy, il y a 9 ans

regarde dans la doc php 'tri des tableaux' la ligne correspondant à tri par la clé et tri croissant -> ksort(array)

ensuite regarde l'exemple avec les oranges et les bananes ;-)

jvnet, il y a 9 ans

Merci pour ta réponse Huggy,
Mon souci est, les fonctions que tu m'as conseillées j'arrive à les faire fonctionner sur des tableaux associatifs simples, avec une seule entrée.
Or, dans le cas de mon mon besoin actuel, il s'agit d'un tableau multi-dimentionnel. j'ai essayé toutes les fonctions, aucun succès.
J'ai testé sans succès les fonctions suivantes comme ceci :

ksort($Montab); Krsorrt($Montab); natcasesort($Montab) ...

Merci, si t'as une idée sur les tri des tableaux associatifs multi-dimentionnels.
espère te lire.

Carouge10, il y a 9 ans

Bonsoir,
C'est le multi-dimensions qui pose problème.
Qu'elle est l'intérêt d'avoir un tableau dans un autre si ce n'est que pour avoir une seule valeur ?

La solution serait de revenir à une dimension pour pouvoir trier votre tableau.

Huggy, il y a 9 ans

Je n'ai pas trop de solution mis à part fusionner les sous-tableaux

$fruits = array(); $fruits[0] = array('fournisseur3' => 'melons'); $fruits[1] = array('fournisseur2' => 'poires'); $fruits[2] = array('fournisseur1' => 'cerises'); // print_r => Array ( [0] => Array ( [fournisseur3] => melons ) [1] => Array ( [fournisseur2] => poires ) [2] => Array ( [fournisseur1] => cerises ) ) // on fusionne les sous-tableaux $result = array(); foreach ($fruits as $t){ $result = array_merge($result, $t); } print_r($result); // avant le tri Array ( [fournisseur3] => melons [fournisseur2] => poires [fournisseur1] => cerises ) echo '<br/>'; asort($result); print_r($result); /: apres le tri Array ( [fournisseur1] => cerises [fournisseur3] => melons [fournisseur2] => poires )
jvnet, il y a 9 ans

Ok, Merci pour ta réponse Huggy, cela m'a mis sur la bonne voie. C'est vrai que je n'avais pas pensé à ça. Je commence à avoir un resultat satisfaisant depuis. Merci pour cette piste.