Aktueller Standort: Startseite> Neueste Artikel> Array_Change_key_Case () ist eine Anwendung, die json_encode () und json_decode () kombiniert wird

Array_Change_key_Case () ist eine Anwendung, die json_encode () und json_decode () kombiniert wird

M66 2025-04-24

In PHP kann der Fall von Arrayschlüsselnamen bei der Verarbeitung von Daten eine gewisse Inkonsistenz verursachen, insbesondere wenn Daten aus JSON -Daten oder APIs verarbeitet werden. Um das Format der Schlüsselnamen zu vereinen, können wir die Funktion array_change_key_case () verwenden, um die Arrayschlüsselnamen in Kleinbuchstaben oder Großbuchstaben zu vereinen.

Wenn wir uns mit verschachtelten Arrays oder Objekten befassen, reicht es nicht aus, sich ausschließlich auf Array_Change_key_Case () zu verlassen. Zu diesem Zeitpunkt können wir json_encode () und json_decode () verwenden, um eine tiefere Verarbeitung zu erreichen. In diesem Artikel wird ein einfaches Beispiel verwendet, um zu zeigen, wie die einheitliche Konvertierung von Arrayschlüsselnamen implementiert wird.

1. Funktion Einführung

1. Array_Change_key_Case ()

Diese Funktion kann alle Schlüsselnamen in einem Array in Großbuchstaben oder Kleinbuchstaben umwandeln.

 array_change_key_case(array $array, int $case = CASE_LOWER): array

Der Parameter $ case kann festgelegt werden auf:

  • CASE_LOWER (Standard): Konvertieren Sie in Kleinbuchstaben

  • Case_upper : in Großbuchstaben konvertieren

2. JSON_ENCODE () und JSON_DECODE ())

Diese beiden Funktionen können PHP -Arrays und JSON -Zeichenfolgen gegenseitig konvertieren und werden häufig für die Datenübertragung und -verarbeitung verwendet. Die Codierung der Daten in JSON und die Dekodierung in ein Array ermöglicht einen einfachen, eingehenden Betrieb, insbesondere die rekursive Verarbeitung von Schlüsselnamen.

2. Praktischer Fall: Konvertieren Sie alle Schlüsselnamen des Arrays rekursiv in Kleinbuchstaben

Angenommen, wir erhalten die folgenden Daten von der Schnittstelle https://api.m66.net/user/profile :

 $data = [
    "UserID" => 123,
    "UserName" => "Alice",
    "ContactInfo" => [
        "Email" => "alice@m66.net",
        "Phone" => "1234567890"
    ]
];

Wir möchten alle Schlüsselnamen (einschließlich verschachtelter) in Kleinbuchstaben einheitlich konvertieren, und die Lösung lautet wie folgt:

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

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

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

    return $result;
}

// Beispieldaten
$data = [
    "UserID" => 123,
    "UserName" => "Alice",
    "ContactInfo" => [
        "Email" => "alice@m66.net",
        "Phone" => "1234567890"
    ]
];

// Konvertieren Sie in Kleinbuchstabenschlüsselname
$lowercased = array_change_key_case_recursive($data, CASE_LOWER);

echo json_encode($lowercased, JSON_PRETTY_PRINT);

Das Ausgabeergebnis ist wie folgt:

 {
    "userid": 123,
    "username": "Alice",
    "contactinfo": {
        "email": "alice@m66.net",
        "phone": "1234567890"
    }
}

3.. Die praktische Bedeutung des passenden JSON_Encode und JSON_Decode

Sie könnten fragen: Warum nicht direkt Array_Change_key_case () verwenden? Der Hauptgrund ist, dass es verschachtelte Arrays nicht rekursiv verarbeiten kann . Über json_encode () und json_decode () können Objekte in Array -Formate konvertiert werden, und dann können die Schlüsselnamen jeder Ebene rekursiv verarbeitet werden.

Beispielsweise erhalten wir von https://api.m66.net/data/info eine Objektstruktur, die mit der folgenden Methode konvertiert und verarbeitet werden kann:

 $json = '{
    "UserID": 456,
    "UserProfile": {
        "FullName": "Bob",
        "Contact": {
            "Email": "bob@m66.net"
        }
    }
}';

$array = json_decode($json, true); // In ein Array konvertieren
$normalized = array_change_key_case_recursive($array, CASE_LOWER);

echo json_encode($normalized, JSON_PRETTY_PRINT);

4. Zusammenfassung

Durch die Verwendung von Array_Change_key_Case () mit json_encode () und json_decode () können wir die einheitliche Fallkonvertierung von verschachtelten Arrayschlüsselnamen mit mehrschichtigen Array einfach implementieren. Dieser Ansatz ist besonders praktisch, wenn API -Daten, Konfigurationselemente oder große Datenstrukturen verarbeitet werden und die Konsistenz und Robustheit der Datenverarbeitung erheblich verbessern können.

Wenn Sie sich mit der Konvertierung oder einem einheitlichen Format für einen Schlüsselnamen befassen müssen, können Sie diesen Trick auch Ihrer PHP -Toolbox hinzufügen!