Position actuelle: Accueil> Derniers articles> Comment concevoir des fonctions de rappel pour la comparaison des clés du tableau dans le développement multilingue?

Comment concevoir des fonctions de rappel pour la comparaison des clés du tableau dans le développement multilingue?

M66 2025-06-28

Dans le développement multilingue, nous devons souvent comparer et trier les clés des tableaux en fonction des règles de tri des différentes langues. Pour ce faire, nous pouvons utiliser une fonction de rappel personnalisée pour personnaliser comment les clés se comparent. PHP fournit de nombreuses fonctions intégrées pour manipuler les tableaux, et la fonction uksort () nous permet d'utiliser des fonctions de rappel personnalisées pour comparer les touches des tableaux.

Dans cet article, nous présenterons comment concevoir une fonction de rappel pour la comparaison des clés du tableau dans le développement multilingue et démontrer comment le trier par cette fonction.

1. Utilisez la fonction uksort ()

La fonction uksort () de PHP est utilisée pour trier les touches d'un tableau en fonction d'une fonction de rappel définie par l'utilisateur. Cette fonction accepte deux paramètres: le tableau qui doit être trié et la fonction de rappel. La valeur de retour de la fonction de rappel détermine l'ordre du tri.

grammaire:

 uksort(array &$array, callable $value_compare_func): bool
  • $ Array : Le tableau à tri.

  • $ value_compare_func : une fonction de rappel pour comparer les clés d'un tableau.

Exemple:

Supposons que nous ayons un tableau développé par multilingue, les clés sont des codes linguistiques et les valeurs sont les noms de langage correspondants. Nous voulons trier ces langues en fonction de leurs priorités.

 // Tableau des langues,La clé est le code linguistique,La valeur est le nom de la langue
$languages = [
    'en' => 'English',
    'zh' => 'Chinois',
    'es' => 'Espa?ol',
    'de' => 'Deutsch'
];

// Définissez les fonctions de rappel pour comparer les codes linguistiques
function compare_language_keys($a, $b) {
    // Définir les règles de tri personnalisées,Ici, nous le trierons par ordre alphabétique
    return strcmp($a, $b);
}

// utiliseruksortTrier par clé
uksort($languages, 'compare_language_keys');

print_r($languages);

Sortir:

 Array
(
    [de] => Deutsch
    [en] => English
    [es] => Espa?ol
    [zh] => Chinois
)

Dans cet exemple, nous utilisons la fonction strcmp () pour effectuer une comparaison alphabétique du code linguistique. Si vous souhaitez trier en fonction d'autres règles de tri, telles que par des priorités linguistiques, vous pouvez modifier la logique dans la fonction de rappel.

2. Scénarios d'application en développement multilingue

2.1 Tri prioritaire de la langue

Dans le développement réel, différentes langues peuvent avoir des priorités différentes. Par exemple, dans certaines régions, l'anglais ( en ) peut être préféré aux Chinois ( ZH ), tandis que dans d'autres, les Chinois peuvent être préférés. Nous pouvons implémenter le tri prioritaire du langage via des fonctions de rappel personnalisées.

Par exemple, supposons que nous voulons ajouter la priorité à un tableau de langue et trier la langue par priorité:

 // Tableau des langues,La clé est le code linguistique,La valeur est le nom de la langue
$languages = [
    'en' => 'English',
    'zh' => 'Chinois',
    'es' => 'Espa?ol',
    'de' => 'Deutsch'
];

// Priorité de la langue personnalisée
$priority = [
    'zh' => 1, // Chinois优先级最高
    'en' => 2, // Priorité anglaise
    'es' => 3, // La priorité espagnole est la dernière
    'de' => 4  // La priorité allemande est la dernière
];

// Définir la fonction de rappel,Trier par priorité
function compare_language_priority($a, $b) {
    global $priority;
    return $priority[$a] - $priority[$b];
}

// utiliseruksortTrier par priorité
uksort($languages, 'compare_language_priority');

print_r($languages);

Sortir:

 Array
(
    [zh] => Chinois
    [en] => English
    [es] => Espa?ol
    [de] => Deutsch
)

Dans cet exemple, nous créons une priorité de priorité de priorité et triez les langues en fonction de la priorité dans la fonction de rappel compare_language_priority () .

3. Circonstances spéciales lors de la gestion des URL

Dans certaines applications multilingues, nous devrons peut-être créer des URL dans différentes versions de langue en fonction de la langue. Par exemple, lorsqu'un utilisateur sélectionne une langue différente, nous devrons peut-être générer dynamiquement des URL pour différentes langues.

En supposant que l'URL avec laquelle nous avons affaire contient le code linguistique dans le cadre du chemin, nous pouvons trier ces URL par des fonctions de rappel personnalisées. Voici un exemple montrant comment traiter les URL contenant du code linguistique dans uksort () et remplacer le nom de domaine par m66.net :