Position actuelle: Accueil> Derniers articles> Comment utiliser les fonctions strnatcasecmp et array_filter pour le filtrage de tri naturel?

Comment utiliser les fonctions strnatcasecmp et array_filter pour le filtrage de tri naturel?

gitbox 2025-05-20

Dans PHP, les fonctions strnatcasecmp et array_filter sont deux outils très pratiques pour le tri naturel et le filtrage du tableau, respectivement. En combinant ces deux fonctions, nous pouvons facilement implémenter le tri et le filtrage naturels des tableaux, en particulier lors du tri et du filtrage des tableaux contenant des chaînes. Leur combinaison peut considérablement améliorer la lisibilité et l'efficacité du code.

1. Introduction à la fonction strnatcasecmpMP

La fonction StrnatcasecMP est utilisée pour comparer deux chaînes et retourner leurs différences dans l'ordre de "tri naturel". Le soi-disant «tri naturel» signifie le tri dans l'ordre des habitudes humaines. Par exemple, la chaîne "2" sera en avance sur "10", qui est différente de l'ordre du dictionnaire. Cette fonction ignore le cas et convient aux cas où il doit être trié par ordre naturel.

grammaire:

 strnatcasecmp(string $str1, string $str2): int
  • STR1 : la première chaîne.

  • str2 : la deuxième chaîne.

Valeur de retour: si $ str1 est inférieur à $ STR2 , renvoyez un nombre négatif; S'il est égal, retournez 0; Si plus de $ STR2 , renvoyez un nombre positif.

2. Introduction à la fonction array_filter

La fonction Array_Filter est utilisée pour filtrer les éléments dans un tableau. Il traverse le tableau en fonction de la fonction de rappel donnée et renvoie des éléments qui répondent aux critères. Cette fonction est très adaptée au filtrage des éléments de tableau qui respectent certaines règles.

grammaire:

 array_filter(array $array, callable $callback, int $mode = 0): array
  • $ tableau : le tableau d'entrée.

  • $ rappel : la fonction de rappel utilisée pour le filtrage. Si la fonction de rappel n'est pas fournie, Array_Filter supprimera tous les éléments avec une valeur de faux .

  • Mode $ : facultatif, spécifiant comment gérer les clés dans un tableau. La valeur par défaut est 0, ce qui signifie que les clés qui conservent le tableau d'origine.

Valeur de retour: tableau filtré.

3. Exemples d'application de tri et de filtrage naturels

Supposons que nous ayons un tableau contenant des noms de fichiers qui ont à la fois des chiffres et des lettres. Nous voulons que ces noms de fichiers soient triés naturellement et filtrés des fichiers contenant des mots clés spécifiques (tels que "test".

Exemple de code:

 <?php

// Supposons que nous ayons un tableau de noms de fichiers
$files = [
    "file10.txt",
    "file2.txt",
    "file1.txt",
    "testFile1.txt",
    "testFile2.txt",
    "file20.txt"
];

// utiliserarray_filterFiltrez l&#39;inclusion"test"Fichiers
$filteredFiles = array_filter($files, function($file) {
    return stripos($file, 'test') !== false;
});

// utiliserstrnatcasecmpFaire le tri naturel
usort($filteredFiles, 'strnatcasecmp');

// 输出筛选和排序后Fichiers列表
echo "筛选和排序后Fichiers列表:\n";
foreach ($filteredFiles as $file) {
    echo $file . "\n";
}

?>

Analyse de code:

  1. Fichiers de filtre : nous utilisons la fonction Array_Filter pour filtrer le tableau et filtrer le nom de fichier contenant "test". La fonction StripOS est utilisée pour ignorer les vérifications de cas si le nom de fichier contient "test".

  2. Tri naturel : Ensuite, utilisez la fonction USORT pour trier les fichiers filtrés naturellement. USORT accepte une fonction de comparaison comme un argument, nous utilisons ici StrnatcasecMP pour le tri naturel.

  3. Résultat de sortie : Enfin, nous sortions le nom de fichier filtré et trié.

Résultats en cours:

 筛选和排序后Fichiers列表:
testFile1.txt
testFile2.txt

4. Résumé

En combinant les fonctions strnatcasecmp et array_filter , nous pouvons très bien trier et filtrer les éléments dans un tableau naturellement. StrnatcasecMP nous fournit la méthode de tri des habitudes humaines, tandis que Array_Filter nous permet de filtrer efficacement les éléments qui répondent aux critères. La combinaison des deux peut simplifier notre code et améliorer sa lisibilité, adaptée à une variété de scénarios où des opérations de tri et de filtrage sont nécessaires.