Die json_encode-Funktion in PHP konvertiert eine PHP-Variable in eine JSON-Formatzeichenfolge. Am häufigsten wird ein Array in PHP in einen JSON-formatierten String konvertiert. In einigen Fällen möchten Sie jedoch möglicherweise, dass die Funktion json_encode das Array nicht konvertiert. In diesem Artikel werden wir untersuchen, wie wir dieses Ziel erreichen können.
Schauen wir uns zunächst an, wie die Funktion json_encode Arrays standardmäßig konvertiert. Angenommen, wir haben das folgende PHP-Array:
$array = array( "name" => "John", "age" => 30, "hobbies" => array("reading", "swimming", "traveling") );
Wenn wir dieses Array an die json_encode-Funktion übergeben, gibt die Funktion die folgende JSON-formatierte Zeichenfolge zurück:
{ "name": "John", "age": 30, "hobbies": ["reading", "swimming", "traveling"] }
Wie Sie sehen können, hat die Funktion den Wert der „Hobbys“ geändert. Schlüssel aus einem PHP-Subarray wird in ein JSON-Array konvertiert. Dies ist in den meisten Fällen nützlich, da es uns eine Möglichkeit bietet, PHP-Daten Schicht für Schicht rekursiv in das JSON-Format zu konvertieren.
In einigen Fällen möchten wir jedoch, dass die json_encode-Funktion die Arrays nicht konvertiert, sondern sie als ursprüngliche PHP-Arrays behält. Es gibt eine Möglichkeit, dies zu erreichen, und zwar durch die Verwendung spezieller Platzhalter im Array.
Wir können jedes Unterarray im Array durch einen Platzhalter ersetzen und dann eine Rückruffunktion in der json_encode-Funktion verwenden, um diese Platzhalter wieder durch normale Unterarrays zu ersetzen. Hier ist ein Beispiel:
$array = array( "name" => "John", "age" => 30, "hobbies" => "[[subarray]]" ); function replaceSubarrays($data) { if(is_array($data)) { if(in_array("[[subarray]]", $data)) { $data = array_map("replaceSubarrays", $data); } } elseif ($data == "[[subarray]]") { $data = array(); } return $data; } $json = json_encode(array_map("replaceSubarrays", $array)); echo $json;
In diesem Beispiel ersetzen wir den Wert des Schlüssels „hobbys“ durch „[[subarray]]“, einen speziellen Platzhalter, der angibt, dass es sich bei dem Wert um ein Subarray handelt. Wir definieren auch eine Rückruffunktion replaceSubarrays, um diesen Platzhalter zu verarbeiten. Es durchläuft alle Array-Elemente rekursiv, findet alle Unterarrays, die Platzhalter enthalten, und ersetzt sie durch leere Arrays. Anschließend verwenden wir die Funktion json_encode und die Funktion array_map, um das gesamte Array an die Callback-Funktion zu übergeben und das Unterarray zu ersetzen.
Wenn wir dieses Beispiel ausführen, erhalten wir die folgende Zeichenfolge im JSON-Format:
{ "name": "John", "age": 30, "hobbies": "[[subarray]]" }
Wie erwartet wird der Wert des Schlüssels „hobbys“ nicht in ein JSON-Array konvertiert, sondern bleibt als „[[subarray] ]“ erhalten. Zeichenfolge.
Dieser Ansatz mit Platzhaltern erfordert zwar etwas zusätzliche Arbeit, ermöglicht aber, dass die json_encode-Funktion das ursprüngliche PHP-Array beibehält, sodass wir die Daten auf einer höheren Ebene verarbeiten können.
Das obige ist der detaillierte Inhalt vonSo erreichen Sie ein PHP-Array json_encode ohne Konvertierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!