par
ramy » 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 :
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?
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]($inverse ? ksort($array) : krsort($array)); // $inverse est une booléenne[/code].
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]natcasesort($array);
array_reverse($array,$inverse);[/code]
Oui mais cette dernière fonction est assez atypique : [code]
Array
(
[0] => Array
(
[0] => rouge
[1] => vert
)
[1] => 4
[2] => php
)
// devient
Array
(
[2] => Array
(
[0] => rouge
[1] => vert
)
[1] => 4
[0] => php
)[/code]
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?