J'ai le tableau suivant:

$arr = array('XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

Maintenant, en utilisant une fonction, je génère le tableau suivant basé sur le précédent. Lors de l'exécution d'un print_r($new_arr) et de son écho dans les balises pre, voici le résultat:

Array
(
    [4] => l
    [3] => m
    [2] => s
    [5] => xl
    [1] => xs
)

Cependant, j'essaye de réaliser ceci:

Array
(
    [1] => xs
    [2] => s
    [3] => m
    [4] => l
    [5] => xl
)

Maintenant, j'ai fait quelques recherches sur S.O et j'ai trouvé la fonction ksort. Une lecture plus approfondie dans la documentation PHP montre que c'est celui à utiliser, mais lorsque j'utilise ksort comme suit et que la sortie fait écho, j'obtiens la valeur 1 uniquement, au lieu d'un tableau de valeurs comme je m'y attendais dans le paragraphe précédent ci-dessus:

$sorted_arr = ksort($new_arr);

En écho $sorted_arr dans les balises pre, voici le résultat (c'est juste le numéro un):

1

Je ne sais pas vraiment ce qui ne va pas ici. Merci d'avance.

1
nTuply 23 déc. 2015 à 20:12

3 réponses

Meilleure réponse

ksort renvoie une valeur booléenne et non le tableau trié. Sortez la variable $new_arr à la place.

4
Patrick Gregorio 23 déc. 2015 à 17:29

Si vous parcourez la documentation ici. Vous découvrirez ksort retours TRUE en cas de succès ou FALSE en cas d'échec. Imprimez plutôt le $new_arr, il a été passé comme référence à ksort().

0
Tarun Vashisth 23 déc. 2015 à 17:21

Ce que vous recherchez, c'est la fonction krsort.

Notez que la fonction trie le tableau d'entrée sur place, plutôt que de renvoyer une version triée. La valeur de retour est un booléen et indique simplement le succès ou l'échec.

0
91dave 23 déc. 2015 à 17:22