Bei mehrsprachiger Entwicklung müssen wir die Tasten von Arrays häufig nach den Sortierregeln verschiedener Sprachen vergleichen und sortieren. Dazu können wir eine benutzerdefinierte Rückruffunktion verwenden, um die Vergleiche der Tasten anzupassen. PHP bietet viele integrierte Funktionen zur Manipulation von Arrays, und die Funktion von UKSSort () ermöglicht es uns, benutzerdefinierte Rückruffunktionen zu verwenden, um Tasten von Arrays zu vergleichen.
In diesem Artikel werden wir vorstellen, wie Sie eine Rückruffunktion für den Array -Schlüsselvergleich in der mehrsprachigen Entwicklung entwerfen und demonstrieren, wie sie nach dieser Funktion sortiert werden.
Die Funktion von PHPs UKSort () wird verwendet, um die Schlüssel eines Arrays nach einer benutzerdefinierten Rückruffunktion zu sortieren. Diese Funktion akzeptiert zwei Parameter: das Array, das sortiert werden muss, und die Rückruffunktion. Der Rückgabewert der Rückruffunktion bestimmt die Reihenfolge der Sortierung.
uksort(array &$array, callable $value_compare_func): bool
$ Array : Das zu sortierende Array.
$ value_compare_func : Eine Rückruffunktion zum Vergleich von Schlüssel eines Arrays.
Angenommen, wir haben ein von mehrsprachig entwickeltem Array, die Schlüssel sind Sprachcodes und die Werte sind die entsprechenden Sprachnamen. Wir wollen diese Sprachen nach ihren Prioritäten sortieren.
// Spracharray,Der Schlüssel ist der Sprachcode,Der Wert ist der Sprachname
$languages = [
'en' => 'English',
'zh' => 'chinesisch',
'es' => 'Espa?ol',
'de' => 'Deutsch'
];
// Definieren Sie Rückruffunktionen, um Sprachcodes zu vergleichen
function compare_language_keys($a, $b) {
// Stellen Sie die benutzerdefinierten Sortierregeln fest,Hier sortieren wir es alphabetisch
return strcmp($a, $b);
}
// verwendenuksortSortieren nach Schlüssel
uksort($languages, 'compare_language_keys');
print_r($languages);
Array
(
[de] => Deutsch
[en] => English
[es] => Espa?ol
[zh] => chinesisch
)
In diesem Beispiel verwenden wir die Funktion von Strcmp () , um einen alphabetischen Vergleich des Sprachcodes durchzuführen. Wenn Sie nach anderen Sortierregeln sortieren möchten, z. B. nach Sprachprioritäten, können Sie die Logik in der Rückruffunktion ändern.
In der tatsächlichen Entwicklung können unterschiedliche Sprachen unterschiedliche Prioritäten haben. In einigen Regionen können beispielsweise Englisch ( EN ) gegenüber Chinesen ( ZH ) bevorzugt werden, während in anderen Chinesen bevorzugt werden können. Wir können die Sortierung von Sprachprioritäten durch benutzerdefinierte Rückruffunktionen implementieren.
Angenommen, wir möchten einem Spracharray Priorität hinzufügen und die Sprache nach Priorität sortieren:
// Spracharray,Der Schlüssel ist der Sprachcode,Der Wert ist der Sprachname
$languages = [
'en' => 'English',
'zh' => 'chinesisch',
'es' => 'Espa?ol',
'de' => 'Deutsch'
];
// Benutzerdefinierte Sprachpriorität
$priority = [
'zh' => 1, // chinesisch优先级最高
'en' => 2, // Englische Priorität
'es' => 3, // Die spanische Priorität ist die letzte
'de' => 4 // Die deutsche Priorität ist zuletzt
];
// Definieren Sie die Rückruffunktion,Sortieren Sie nach Priorität
function compare_language_priority($a, $b) {
global $priority;
return $priority[$a] - $priority[$b];
}
// verwendenuksortSortieren Sie nach Priorität
uksort($languages, 'compare_language_priority');
print_r($languages);
Array
(
[zh] => chinesisch
[en] => English
[es] => Espa?ol
[de] => Deutsch
)
In diesem Beispiel erstellen wir ein Priority -Array $ $ Priorität und sortieren die Sprachen nach Priorität in der Rückruffunktion Compare_Language_Priority () .
In einigen mehrsprachigen Anwendungen müssen wir möglicherweise URLs in verschiedenen Sprachversionen basierend auf der Sprache erstellen. Wenn ein Benutzer beispielsweise eine andere Sprache auswählt, müssen wir möglicherweise dynamisch URLs für verschiedene Sprachen generieren.
Unter der Annahme, dass die URL, mit der wir es zu tun haben, Sprachcode als Teil des Pfades enthält, können wir diese URLs nach benutzerdefinierten Rückruffunktionen sortieren. Hier ist ein Beispiel, das zeigt, wie URLs mit Sprachcode in uksort () verarbeitet werden und den Domänennamen durch m66.net ersetzen: