Einführung
In PHP kommt es manchmal vor, dass man ein Array in ein Objekt umwandeln muss. In diesem kleinen Hack werden wir sehen, wie einfach dies zu bewerkstelligen ist.
Das Array
Nehmen wir an, Sie haben ein Array mit einer Eigenschaft, die ein anderes Array enthält. Klingt kompliziert? Nun, hier haben Sie einfach ein Array innerhalb eines Arrays.
Lesen Sie auch: Wie man PHP-Arrays verwendet
<?php $array =[ 'items' => ['foo','bar'] ];
Die Ausgabe
Wenn Sie das Array ausdrucken, erhalten Sie möglicherweise ein Ergebnis wie
Lesen Sie auch: index.php aus Laravel entfernen
array:1 [▼ "items " => array:2 [▼ 0 => "foo" 1 => "bar" ] ]
In ein Objekt umwandeln
Konvertieren wir also dieses Array in ein Objekt. Hier verwenden wir json_encode & json_decode. JSON ist die JavaScript-Objektnotation und PHP bietet uns die Möglichkeit, JSON zu kodieren und zu dekodieren.
- json_encode: Zur Konvertierung eines Arrays in einen JSON-String.
- json_decode: Für die Konvertierung eines json-Strings in ein Objekt.
Schritt 1 - Enkodierung in einen String
$object = json_encode($array);
var_dump dieses Objekt erhalten Sie etwas wie:
"{"items":["foo","bar"]}"
Diese Informationen können z.B. für die Speicherung in der Datenbank nützlich sein.
Schritt 2 - Dekodierung in ein Objekt
Da wir nun einen json-String haben, können wir json_decode verwenden, um diesen String in ein Objekt zu konvertieren und zu formatieren. Versuchen wir das mal.
$object = json_decode(json_encode($array));
var_dump dieses Objekts liefert Ihnen jetzt
stdClass Object ( [items] => Array ( [0] => foo [1] => bar ) )
Bei json_decode ist zu beachten, dass es einen json-String in ein Objekt umwandelt, es sei denn, Sie geben eine zweite Option an, bei der es sich um einen Boolean handelt, der true oder false sein kann. Wenn Sie den zweiten Parameter auf "true" setzen, erhalten Sie trotzdem ein Array.
Der Anwendungsfall
Nachdem wir unser Array erfolgreich in ein Objekt umgewandelt haben, können wir es verwenden als
foreach ($object->items as $item) { echo $item; }
Probieren Sie diesen kleinen Trick selbst aus und hinterlassen Sie uns unten einen Kommentar, wenn Sie Fragen dazu haben.
Der bessere Weg
Die Verwendung von JSON encode und decode für die Umwandlung von Arrays in Objekte kann eine Menge Ressourcen verbrauchen, wenn das Array größer ist. Der bessere Weg, ein Array in ein Objekt umzuwandeln, ist die Verwendung des Objekt-Typecasts. Zum Beispiel
$object = (object)$array;
Dies liefert auch
stdClass Object ( [items] => Array ( [0] => foo [1] => bar ) )
Es bleibt Ihnen überlassen, welche der beiden Methoden Sie für die Umwandlung eines Arrays in ein Objekt in PHP wählen.
Lesen Sie auch: Beste Quellen zum Erlernen von Laravel