En programmation PHP, nous avons souvent besoin de trier des tableaux. PHP fournit de nombreuses fonctions de tri de tableaux, telles que sort(), asort(), ksort(), etc., qui trient les éléments d'un tableau de différentes manières. Cependant, ces fonctions modifient l'ordre des clés du tableau par défaut. Et si nous voulons conserver l’ordre des clés du tableau ? Cet article vous présentera quelques méthodes.
La fonction uksort() est une fonction très puissante en PHP, qui nous permet de définir notre propre fonction de tri et de trier le tableau selon notre méthode. L'utilisation de la fonction uksort() est la suivante :
bool uksort(array &$array, callable $cmp_function)
où $array est le tableau à trier et $cmp_function est la fonction de tri personnalisée.
Dans la fonction de tri personnalisée, nous pouvons utiliser les deux paramètres $a et $b pour comparer deux éléments du tableau et renvoyer le résultat trié. Si $a précède $b, renvoie un entier inférieur à 0 ; si $a précède $b, renvoie un entier supérieur à 0 ; si $a et $b sont égaux, renvoie 0.
Ce qui suit est un exemple de code :
$b) ? 1 : -1; } $array = array( 'c' => 1, 'a' => 2, 'b' => 3, ); uksort($array, 'my_sort'); print_r($array); ?>
Le code ci-dessus affichera :
Array ( [c] => 1 [a] => 2 [b] => 3 )
Comme vous pouvez le voir, les noms de clé des éléments du tableau n'ont pas changé. Parmi eux, la fonction my_sort() compare en fonction de la relation de taille des noms de clés.
La fonction ksort() est une fonction couramment utilisée en PHP pour trier par noms de clés. Contrairement à sort() et asort(), ksort() change uniquement l'ordre des éléments du tableau sans modifier les noms de clés.
Cependant, nous pouvons également enregistrer le nom de la clé d'origine grâce à quelques astuces. La méthode spécifique est la suivante : stockez d'abord le nom de la clé et la valeur correspondante dans un nouveau tableau, puis triez le nouveau tableau et enfin réaffectez les valeurs triées au tableau d'origine. L'exemple de code est le suivant :
1, 'a' => 2, 'b' => 3, ); $tmp_array = array(); foreach ($array as $key => $value) { $tmp_array[$key] = $value; } ksort($tmp_array); $new_array = array(); foreach ($tmp_array as $key => $value) { $new_array[$key] = $value; } $array = $new_array; print_r($array); ?>
Le code ci-dessus affichera :
Array ( [c] => 1 [a] => 2 [b] => 3 )
Comme vous pouvez le voir, les noms de clé des éléments du tableau n'ont pas changé. Cependant, cette méthode nécessite l'utilisation d'un tableau supplémentaire pour enregistrer les noms de clés d'origine, ce qui peut entraîner des problèmes de mémoire si le nombre d'éléments du tableau est important.
Semblable à ksort(), la fonction asort() peut également trier par valeur, mais elle modifiera également l'ordre des éléments du tableau.
De même, nous pouvons également enregistrer les noms de clés d'origine grâce à certaines techniques. La méthode spécifique est la suivante : stockez d'abord le nom de la clé et la valeur correspondante dans un nouveau tableau, puis triez le nouveau tableau et enfin réaffectez les valeurs triées au tableau d'origine. L'exemple de code est le suivant :
1, 'a' => 2, 'b' => 3, ); $tmp_array = array(); foreach ($array as $key => $value) { $tmp_array[$key] = $value; } asort($tmp_array); $new_array = array(); foreach ($tmp_array as $key => $value) { $new_array[$key] = $value; } $array = $new_array; print_r($array); ?>
Le code ci-dessus affichera :
Array ( [c] => 1 [a] => 2 [b] => 3 )
Comme vous pouvez le voir, les noms de clé des éléments du tableau n'ont pas changé. De même, cette méthode nécessite également l'utilisation de tableaux supplémentaires pour enregistrer les noms de clés d'origine, ce qui peut entraîner des problèmes de mémoire.
En résumé, les trois méthodes ci-dessus peuvent conserver l'ordre des noms de clés du tableau et vous pouvez choisir en fonction de la situation spécifique. Cependant, il convient de noter que s'il y a des noms de clés en double dans le tableau, les noms de clés peuvent manquer après le tri, et cela doit être géré en fonction de la situation spécifique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!