Aktueller Standort: Startseite> Neueste Artikel> Wie verarbeitet man komplexe Arrays von Array_Change_key_Case () und Array_Map ()?

Wie verarbeitet man komplexe Arrays von Array_Change_key_Case () und Array_Map ()?

M66 2025-04-27

In PHP sind Array_Change_key_case () und Array_Map () beide sehr praktische Array -Verarbeitungsfunktionen, aber sie werden bei der Verarbeitung unterschiedlich ausgeführt. Können diese beiden Funktionen also kombiniert werden, um mehrdimensionale Arrays zu verarbeiten? Lassen Sie uns dieses Problem gemeinsam diskutieren.

1. Funktion Einführung

  • Array_Change_key_Case (Array $ Array, int $ case = case_lower) : Wird verwendet, um alle Schlüsselnamen in einem Array in Kleinbuchstaben oder Großbuchstaben zu konvertieren.

  • Array_Map (Callable $ Callback, Array $ Array) : Wenden Sie eine Rückruffunktion auf jedes Element im Array an.

Die Verwendung dieser beiden Funktionen ist bei der Verarbeitung eindimensionaler Arrays stressfrei, aber wenn es um das mehrdimensionale Array -Szenario geht, ist eine zusätzliche logische Verarbeitung erforderlich.

2. Problemaufzucht

Angenommen, wir haben ein mehrdimensionales Array wie folgt:

 $data = [
    "Name" => "Alice",
    "Details" => [
        "Age" => 25,
        "Email" => "alice@m66.net"
    ],
    "Preferences" => [
        "Colors" => ["Red", "Green"],
        "Languages" => ["PHP", "JavaScript"]
    ]
];

Wir möchten alle Schlüsselnamen in Kleinbuchstaben umwandeln. Zu diesem Zeitpunkt verwenden Sie, wenn Sie array_change_key_case () direkt verwenden:

 $result = array_change_key_case($data, CASE_LOWER);

Wir können nur mit den äußersten Schlüssel umgehen, und die Schlüssel in Details und Einstellungen werden nicht konvertiert.

Dies führt zur Kernfrage dieses Artikels: Wie verwendet man die Kombination von Array_Change_key_Case () und Array_Map (), um mehrdimensionale Arrays rekursiv zu verarbeiten?

3. Lösung: rekursive Funktionen

Wir können eine rekursive Funktion anpassen und array_change_key_case () kombinieren, um Tasten auf allen Ebenen zu verarbeiten:

 function recursive_change_key_case(array $array, int $case = CASE_LOWER): array {
    $newArray = array_change_key_case($array, $case);
    foreach ($newArray as $key => $value) {
        if (is_array($value)) {
            $newArray[$key] = recursive_change_key_case($value, $case);
        }
    }
    return $newArray;
}

Angerufen:

 $processed = recursive_change_key_case($data, CASE_LOWER);
print_r($processed);

Ausgangsergebnis:

 Array
(
    [name] => Alice
    [details] => Array
        (
            [age] => 25
            [email] => alice@m66.net
        )

    [preferences] => Array
        (
            [colors] => Array
                (
                    [0] => Red
                    [1] => Green
                )

            [languages] => Array
                (
                    [0] => PHP
                    [1] => JavaScript
                )

        )

)

Wie Sie sehen können, wurden alle Schlüsselnamen, einschließlich derjenigen auf verschachtelten Ebene, erfolgreich in Kleinbuchstaben umgewandelt .

4. Welche Rolle spielt Array_Map ()?

Kann Array_map () hier verwendet werden? Es ist hauptsächlich für die Verarbeitungswerte geeignet , nicht für Tasten. Wenn wir jeden Wert (und nicht den Schlüsselnamen) verarbeiten möchten, z. B. das Entfernen von Räumen in Zeichenfolgen, Formatierung usw., können wir ihn in Kombination verwenden:

 function recursive_map(array $array, callable $callback): array {
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            $array[$key] = recursive_map($value, $callback);
        } else {
            $array[$key] = $callback($value);
        }
    }
    return $array;
}

Entfernen Sie beispielsweise Leerzeichen von allen Zeichenfolgen:

 $cleaned = recursive_map($processed, function($value) {
    return is_string($value) ? str_replace(' ', '', $value) : $value;
});

5. Zusammenfassung

  • array_change_key_case () kann Schlüsselnamen in obere und untere Fall umwandeln, unterstützt jedoch nur eindimensionale Arrays .

  • Array_map () eignet sich besser für die Verarbeitung von Werten in Arrays und verarbeitet keine Schlüssel.

  • Um den Schlüsselnamen zu verwalten , können Sie rekursive benutzerdefinierte Funktionen zum Implementieren kombinieren.

  • Wenn Sie gleichzeitig mit Schlüssel und Werten umgehen möchten, können die beiden Funktionen zusammen verwendet werden und auf unterschiedliche Ziele reagieren.

Durch die Beherrschung dieser Techniken wird Ihre Fähigkeit, komplexe Arrays in PHP zu handhaben, erheblich verbessern. Hoffe dieser Artikel hilft dir!