Aktueller Standort: Startseite> Neueste Artikel> Ist Array_Change_key_Case () für mehrdimensionale Arrays geeignet?

Ist Array_Change_key_Case () für mehrdimensionale Arrays geeignet?

M66 2025-04-25

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:

Die Antwort lautet: Mehrdimensionale Arrays können nicht automatisch verarbeitet werden .

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.

Beispiel: Verarbeitung von Einzelschicht-Arrays

 $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.

Beispiel: Verarbeitung mehrdimensionaler Arrays

 $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.

So implementieren Sie die Fallkonvertierung von Schlüsselnamen in mehrdimensionalen Arrays?

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.