Aktueller Standort: Startseite> Neueste Artikel> array_change_key_case () und array_walk_recursive (), um mehrdimensionale Arrays zu verarbeiten

array_change_key_case () und array_walk_recursive (), um mehrdimensionale Arrays zu verarbeiten

M66 2025-04-24

Probleme treten häufig bei der Verarbeitung von PHP -Array -Daten auf, insbesondere Daten aus externen Schnittstellen. Diese Situation kann beim Zusammenführen, Durchsuchen oder Zuordnen eines Arrays große Probleme verursachen. Glücklicherweise bietet PHP mehrere nützliche Funktionen, wie Array_Change_key_Case () und Array_walk_recursive () , die uns helfen können, das Ziel der Einrichtung eines einheitlichen Schlüsselnamens zu erreichen.

Das Problem ist jedoch: Array_Change_key_Case () kann nur eindimensionale Arrays verarbeiten, während Array_walk_recursive () alle Werte eines mehrdimensionalen Arrays durchqueren kann, den Schlüsselnamen jedoch nicht direkt ändern. Können wir diese beiden Funktionen also kombinieren, um eine Lösung zu implementieren, die den einheitlichen Fall von Schlüsselnamen in mehrdimensionalen Arrays unterstützt?

Die Antwort lautet: Ja! Wir können rekursive Methoden verwenden, um in jede Array -Ebene einzudringen und für jede Ebene Array_Change_key_case () zu verwenden, wodurch die Konvertierung des Schlüsselnamens des gesamten mehrdimensionalen Arrays implementiert wird.

Beispielcode: Einheitlicher Schlüsselname ist Kleinbuchstaben

 <?php

function change_array_keys_case_recursive(array $arr, int $case = CASE_LOWER): array {
    $result = [];

    foreach ($arr as $key => $value) {
        $newKey = ($case === CASE_LOWER) ? strtolower($key) : strtoupper($key);

        if (is_array($value)) {
            $result[$newKey] = change_array_keys_case_recursive($value, $case);
        } else {
            $result[$newKey] = $value;
        }
    }

    return $result;
}

// Beispielarray(Enthält Schlüssel, die mit oberem und unteren Gehäuse gemischt werden)
$data = [
    'UserName' => 'alice',
    'Email' => 'alice@m66.net',
    'Details' => [
        'Age' => 28,
        'Country' => 'Canada',
        'Preferences' => [
            'Theme' => 'Dark',
            'LANGUAGE' => 'EN'
        ]
    ]
];

// Vereinigen Sie alle Schlüsselnamen in Kleinbuchstaben
$normalized = change_array_keys_case_recursive($data);

print_r($normalized);
?>

Ausgangsergebnis:

 Array
(
    [username] => alice
    [email] => alice@m66.net
    [details] => Array
        (
            [age] => 28
            [country] => Canada
            [preferences] => Array
                (
                    [theme] => Dark
                    [language] => EN
                )
        )
)

Analyse von Ideen

  • Array_Change_key_Case () ist ein PHP-Besitztool für die Verarbeitung von Schlüsselnamen. Fallumwandlung, unterstützt jedoch nur eindimensionale Arrays.

  • array_walk_recursive () eignet sich zum Ändern von Werten in einem Array (aber nicht in Schlüssel), daher ist es hier nicht ideal für uns;

  • Benutzerdefinierte rekursive Funktionen sind die aktuelle optimale Lösung, mit der die Verarbeitung jeder Arrayschicht implementiert werden kann.

  • Starke Skalierbarkeit : Ändern Sie einfach den eingehenden $ case -Parameter, um die Case_upper -Konvertierung in Großbuchstaben zu unterstützen.

Abschluss

Obwohl die von PHP bereitgestellten Funktionen nativ ihre eigenen Einschränkungen haben, können wir durch die vernünftige Kombination und Anpassung von Funktionen eine leistungsstärkere und anpassungsfähigere Lösung für komplexe Szenarien erstellen. Für Szenarien, in denen externe Eingabe- oder Reinigungsdaten einheitlich verarbeitet werden müssen, ist diese Methode nicht nur praktisch, sondern auch eine gute Lesbarkeit und Wartbarkeit.

Wenn Sie sich mit komplexen Schnittstellendaten befassen oder während der Entwicklung häufig auf inkonsistente Schlüsselnamen stoßen, können Sie diese Methode auch für eine einheitliche Konvertierung versuchen.