Traitement des données

Eléphanteau du PHP | 19 Messages

15 févr. 2007, 16:00

Bonjour,
j'ai quelques difficultés pour trier un array par ses index... J'utilise donc la fonction ksort() - Je dois également pour inverser cette ordre (les premiers deviennent les derniers); Ce que je réalise avec la fonction krsort soit :

Code : Tout sélectionner

($inverse ? ksort($array) : krsort($array)); // $inverse est une booléenne
.
Si cette méthode de trie est efficace pour les chaines de caractères, elle l'est beaucoup moins pour les nombres : A ce titre, je décide d'utiliser la fonction natcasesort() mais le problème est qu'il n'existe pas de fonction 'rnatcasesort()'... Qu'à cela ne tienne, je vais exécuter la fonction systématiquement et inverser l'array au besoin soit :

Code : Tout sélectionner

natcasesort($array); array_reverse($array,$inverse);
Oui mais cette dernière fonction est assez atypique :

Code : Tout sélectionner

Array ( [0] => Array ( [0] => rouge [1] => vert ) [1] => 4 [2] => php ) // devient Array ( [2] => Array ( [0] => rouge [1] => vert ) [1] => 4 [0] => php )
Et foreach qui est utilisé pour afficher le résultat ne voit pas de différence entre ces deux arrays... De plus, une boucle for($i=0;$i<count($array);$i++) ne fonctionne pas puisque les index sont prédéfinît et globalement très variable.

Finalement, existe-t-il une solution à ce problème et surtout la connaissez-vous?

Mammouth du PHP | 505 Messages

15 févr. 2007, 19:20

Tu as ce résultats car je suppose que $inverse est a true

Si tu le met a false, les index seront mis a jour et tu aura des index croissant malgré un parcour inverse.

Si tu préserve les index, ce n'est que le parcours du tableau qui est altéré, le parcours correspond en gros a l'ordre d'insertion.