Aktueller Standort: Startseite> Neueste Artikel> Kann Array_Change_key_Case () für STDCASS -Objekte verwendet werden?

Kann Array_Change_key_Case () für STDCASS -Objekte verwendet werden?

M66 2025-04-28

In PHP ist Array_Change_key_case () eine sehr praktische Funktion, die die Schlüsselnamen eines Arrays schnell in alle Kleinbuchstaben oder Großbuchstaben umwandelt und häufig zur Vereinheitlichung von Datenformaten verwendet wird, insbesondere bei der Verarbeitung externer Daten (z. B. API -Rückgaben). Kann diese Funktion jedoch direkt auf dem STDClass -Objekt verwendet werden? In diesem Artikel werden Sie gemeinsam dieses Problem untersuchen.

Was ist Array_Change_key_Case ()?

Array_Change_key_case () nimmt ein Array und konvertiert alle Schlüsselnamen in Kleinbuchstaben oder Großbuchstaben:

 $data = [
    "Name" => "Alice",
    "AGE" => 25
];

$lowercase = array_change_key_case($data, CASE_LOWER);
print_r($lowercase);

Ausgangsergebnis:

 Array
(
    [name] => Alice
    [age] => 25
)

Was ist STDClass?

In PHP ist STDClass der am häufigsten verwendete anonyme Objekttyp. Wenn beispielsweise beispielsweise eine JSON -String über JSON_DECODE () dekodiert wird, wird das STDClass -Objekt standardmäßig zurückgegeben, wenn der zweite Parameter nicht übergeben wird.

 $json = '{"Name": "Alice", "AGE": 25}';
$obj = json_decode($json);
print_r($obj);

Das Ausgangsergebnis ähnelt:

 stdClass Object
(
    [Name] => Alice
    [AGE] => 25
)

Kann Array_Change_key_Case () direkt für STDClass verwendet werden?

Die Antwort lautet: Sie kann nicht direkt verwendet werden . array_change_key_case () akzeptiert Arrays nur als Eingabeparameter. Wenn Sie versuchen, das STD -Class -Objekt einzugeben, erhalten Sie eine Warnung oder einen Fehler.

Beispiel:

 $json = '{"Name": "Alice", "AGE": 25}';
$obj = json_decode($json);

$result = array_change_key_case($obj, CASE_LOWER);

Ausgabe:

 Warning: array_change_key_case() expects parameter 1 to be array, object given

Daher müssen wir das Objekt zuerst in ein Array umwandeln und dann die Funktion verwenden.

Richtiger Weg: Zuerst in ein Array konvertieren

Sie können die STDClass mit dem Typ Conversion oder Get_Object_vars () in ein Array konvertieren:

 $json = '{"Name": "Alice", "AGE": 25}';
$obj = json_decode($json);

// Verfahren 1:Typumwandlung Typ
$arr = (array) $obj;

// Verfahren 2:get_object_vars()
$arr2 = get_object_vars($obj);

// verwenden array_change_key_case
$lowercase = array_change_key_case($arr, CASE_LOWER);
print_r($lowercase);

Ausgabe:

 Array
(
    [name] => Alice
    [age] => 25
)

Wenn Sie das Endergebnis in ein Objekt konvertieren müssen, können Sie dies tun:

 $lower_obj = (object) $lowercase;
print_r($lower_obj);

Ergebnis:

 stdClass Object
(
    [name] => Alice
    [age] => 25
)

Praktische Anwendungsszenarien

Angenommen, Sie erhalten Benutzerdaten von einer Schnittstelle (z. B. https://api.m66.net/user/info ):

 $response = file_get_contents('https://api.m66.net/user/info');
$data = json_decode($response); // Standard ist stdClass

$normalized = array_change_key_case((array) $data, CASE_LOWER);
print_r($normalized);

Unabhängig davon, ob die von der Schnittstelle zurückgegebenen Felder Großbuchstaben, Kleinbuchstaben oder gemischt sind, können Sie sie gleichmäßig in das Format verarbeiten, das Sie benötigen.

Zusammenfassen

  • Array_Change_key_Case () kann nur in Arrays verwendet werden.

  • STDClass muss zuerst in ein Array umgewandelt werden.

  • Es wird empfohlen, diese Funktion nach der Konvertierung aufzurufen.

  • Nach der Verarbeitung können Sie bei Bedarf auch zum Objekt zurückkehren.

Dieser Trick wird bei der Verarbeitung von JSON -Daten sehr häufig verwendet, insbesondere bei der Verbindung mit externen Schnittstellen und kann Ihnen helfen, viele Fehler zu vermeiden, die durch inkonsistente Feldfall verursacht werden.