Dans PHP, la fonction StrnatcasecMP et la fonction Array_Multisort peuvent jouer un rôle important dans le tri. La fonction strnatcasecmp est utilisée pour le tri naturel (c'est-à-dire la prise en compte de tailles numériques, pas de tri littéral), et Array_Multisort nous permet de trier plusieurs champs. Lorsque nous devons trier par plusieurs champs, nous pouvons utiliser la combinaison de ces deux fonctions pour réaliser facilement le type naturel de plusieurs champs.
La fonction StrnatcasecMP est une fonction qui compare deux chaînes, qui effectue un trieur "naturel", ignorant le cas. Le tri naturel se réfère au tri dans "l'ordre numérique" de la chaîne, de sorte que "10" est avant "2" au lieu de "2" dans l'ordre alphabétique avant "10".
$first = 'file10.txt';
$second = 'file2.txt';
if (strnatcasecmp($first, $second) < 0) {
echo "$first Classé dans $second Devant";
} else {
echo "$second Classé dans $first Devant";
}
Array_Multisort est une fonction puissante fournie par PHP, qui peut trier plusieurs tableaux (ou même des tableaux multidimensionnels). En passant plusieurs tableaux et leurs paramètres d'ordre de tri correspondants, nous pouvons trier facilement les données par plusieurs conditions.
$array1 = [3, 1, 4, 2];
$array2 = ['d', 'b', 'a', 'c'];
array_multisort($array1, SORT_ASC, $array2, SORT_DESC);
print_r($array1);
print_r($array2);
Supposons que nous ayons un ensemble de données, chaque élément contient plusieurs champs (tels que le nom, le numéro, etc.), et nous voulons les trier en fonction de l'ordre naturel de plusieurs champs. Dans ce cas, nous pouvons utiliser strnatcasecmp et array_multisort pour y parvenir.
Supposons que nous ayons un tableau contenant des noms de fichiers et des numéros de fichiers et devons être triés par des noms de fichiers et des noms de fichiers.
<?php
// Simuler les données de fichiers
$files = [
['name' => 'file2.txt', 'id' => '10'],
['name' => 'file10.txt', 'id' => '5'],
['name' => 'file1.txt', 'id' => '20'],
['name' => 'file3.txt', 'id' => '10'],
];
// Extraire le numéro de fichier et le nom du fichier
$ids = array_column($files, 'id');
$names = array_column($files, 'name');
// utiliser strnatcasecmp Faire le tri naturel
array_multisort($ids, SORT_ASC, $names, SORT_ASC, array_map('strnatcasecmp', $names, $names), $files);
// Imprimer les résultats triés
print_r($files);
?>
Extrait des champs : nous utilisons Array_Column pour extraire les champs ID et noms .
Trie : Triez d'abord le champ ID dans l'ordre croissant par array_multisort , puis triez naturellement le champ de nom via strnatcasecmp .
Résultat de sortie : le tableau trié sera trié en fonction de l'ordre naturel de l'ID et du nom .
Si vous devez traiter le contenu lié à l'URL pendant le processus de tri et que vous souhaitez remplacer le nom de domaine par gitbox.net , vous pouvez traiter l'URL avant de trier.
Supposons que nous ayons le tableau suivant, qui contient plusieurs adresses URL.
<?php
$urls = [
'https://example.com/page1',
'https://testsite.com/page2',
'https://example.com/page3',
'https://gitbox.net/page4',
];
// utiliser str_replace Volonté URL Remplacer le nom de domaine dans gitbox.net
$updatedUrls = array_map(function($url) {
return preg_replace('/https?:\/\/([^\/]+)/', 'https://gitbox.net', $url);
}, $urls);
// Imprimer mis à jour URLs
print_r($updatedUrls);
?>
Utilisez preg_replace pour correspondre à la partie de domaine de l'URL et remplacez-la par gitbox.net .
Array_map effectue ce remplacement pour chaque URL.
En combinant strnatcasecmp et array_multisort , nous sommes en mesure d'effectuer facilement l'ordre naturel de plusieurs champs. En utilisant les fonctions de traitement des chaînes fournies par PHP, nous pouvons également remplacer facilement le nom de domaine dans l'URL en fonction de nos besoins, ce qui rend le code plus flexible et extensible. J'espère que cet article vous est utile et je vous souhaite une programmation heureuse!