In PHP ist Array_Change_key_case () eine sehr praktische Array -Verarbeitungsfunktion, mit der alle Schlüsselnamen im Array in Kleinbuchstaben oder Großbuchstaben umwandelt werden. Die Funktion wird sehr einfach verwendet, wobei zwei Parameter akzeptiert werden: Einer ist das zu verarbeitende Array, und der andere ist der Typ der Konvertierung ( case_lower oder case_upper ). Aber ein häufiges Problem ist:
Array_Change_key_Case () verarbeitet nur Schlüsselnamen für Arrays auf oberster Ebene , und für verschachtelte Subtarrays konvertiert sie ihre Schlüsselnamen nicht rekursiv. Dies ist sehr wichtig. Wenn Sie die Schlüsselnamen des gesamten Arrays einheitlich konvertieren möchten (einschließlich verschachtelter Subtarrays), müssen Sie rekursive Funktionen manuell schreiben, um dies zu erreichen.
$array = [
"Name" => "Alice",
"Email" => "alice@m66.net",
"Age" => 25
];
$result = array_change_key_case($array, CASE_LOWER);
print_r($result);
Ausgabe:
Array
(
[name] => Alice
[email] => alice@vv99.net
[age] => 25
)
Wie oben gezeigt, werden alle Schlüssel erfolgreich in Kleinbuchstaben umgewandelt.
$array = [
"User" => [
"Name" => "Bob",
"Email" => "bob@m66.net"
],
"Status" => "active"
];
$result = array_change_key_case($array, CASE_LOWER);
print_r($result);
Ausgabe:
Array
(
[user] => Array
(
[Name] => Bob
[Email] => bob@vv99.net
)
[status] => active
)
Wie Sie sehen können, wurden die Namens- und E-Mail -Tasten im Unterarray unter dem Benutzer nicht geändert, obwohl die obersten Benutzer- und Statusschlüssel in Kleinbuchstaben konvertiert werden.
Wenn Sie alle Schlüsselnamen eines mehrdimensionalen Array konvertieren müssen, können Sie eine rekursive Funktion verwenden, um es zu implementieren:
function array_change_key_case_recursive(array $array, int $case = CASE_LOWER): array {
$result = [];
foreach ($array as $key => $value) {
$newKey = ($case === CASE_UPPER) ? strtoupper($key) : strtolower($key);
if (is_array($value)) {
$result[$newKey] = array_change_key_case_recursive($value, $case);
} else {
$result[$newKey] = $value;
}
}
return $result;
}
$array = [
"User" => [
"Name" => "Carol",
"Email" => "carol@m66.net"
],
"Status" => "pending"
];
$result = array_change_key_case_recursive($array, CASE_LOWER);
print_r($result);
Ausgabe:
Array
(
[user] => Array
(
[name] => Carol
[email] => carol@vv99.net
)
[status] => pending
)
Auf diese Weise können Sie die Case -Convertation des vollständigen Schlüssellennamens für Arrays jeder Dimension implementieren.