Maison  >  Article  >  développement back-end  >  Comment trier les clés d'un tableau selon leur longueur en PHP et conserver les clés ?

Comment trier les clés d'un tableau selon leur longueur en PHP et conserver les clés ?

王林
王林original
2024-05-02 13:03:02985parcourir

À l'aide de la fonction uksort() et de la fonction de comparaison personnalisée compareKeyLengths, les tableaux PHP peuvent être triés en fonction de la longueur des noms de clé du tableau tout en conservant les noms de clé. La fonction de comparaison calcule la différence de longueurs de clé et renvoie un entier selon lequel uksort() trie le tableau. De plus, un cas pratique montre comment trier les enregistrements de la base de données par longueur de nom de champ.

PHP 中如何根据数组键名长度进行排序,保留键名?

Comment trier un tableau PHP en fonction de la longueur du nom de clé du tableau (en préservant le nom de la clé)

En PHP, vous pouvez utiliser la fonction uksort() pour trier le tableau en fonction de la longueur du nom de clé du tableau Sort. Cette fonction accepte une fonction de rappel comme paramètre, qui compare deux noms de clé et renvoie un entier représentant la différence de longueur de clé. uksort() 函数根据数组键名的长度对数组进行排序。该函数接受一个回调函数作为参数,该函数比较两个键名并返回一个整数,表示键名长度的差值。

排序代码:

<?php
function compareKeyLengths(string $key1, string $key2): int
{
    return strlen($key1) - strlen($key2);
}

$array = ['key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'];

uksort($array, 'compareKeyLengths');

print_r($array);

输出:

Array
(
    [key1] => value1
    [key2] => value2
    [key3] => value3
)

如您所见,数组已根据键名长度进行排序,同时保留了键名。

实战案例:

这是一个将来自数据库的记录按字段名称长度排序的示例。

<?php
$records = [
    ['firstName' => 'John', 'lastName' => 'Doe'],
    ['firstName' => 'Jane', 'lastName' => 'Smith'],
    ['firstName' => 'Bob', 'lastName' => 'Johnson'],
];

uksort($records, 'compareKeyLengths');

foreach ($records as $record) {
    echo 'Name: ' . $record['firstName'] . ' ' . $record['lastName'] . PHP_EOL;
}

输出:

Name: Bob Johnson
Name: Jane Smith
Name: John Doe

注意:

  • 如果键名长度相等,uksort() 函数将保持原始顺序。
  • 如果需要降序排序,可以在比较函数中交换减法运算符(-+
  • Code de tri :
rrreee🎜Sortie :🎜rrreee🎜Comme vous pouvez le voir, le tableau a été trié en fonction de la longueur de la clé tout en préservant les noms des clés. 🎜🎜Cas pratique :🎜🎜 Ceci est un exemple de tri des enregistrements d'une base de données par longueur de nom de champ. 🎜rrreee🎜Sortie : 🎜rrreee🎜Remarque : 🎜
  • Si les longueurs de clé sont égales, la fonction uksort() conservera la commande originale. 🎜
  • Si vous devez trier par ordre décroissant, vous pouvez échanger les opérateurs de soustraction (- et +) dans la fonction de comparaison. 🎜🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn