Bei der PHP-Entwicklung ist es manchmal notwendig, ein Objekt in ein Array umzuwandeln, um die Datenübertragung und -verarbeitung zu erleichtern. In diesem Artikel wird erläutert, wie Sie Objekte in PHP in Arrays konvertieren.
1. Verwenden Sie die Funktion get_object_vars für die Konvertierung
Die in PHP integrierte Funktion get_object_vars kann die Array-Darstellung aller sichtbaren Attribute im Objekt abrufen (der Schlüssel ist der Attributname und Der Wert ist der Attributwert. Wir können das zurückgegebene Array direkt als erforderliches Array verwenden.
Beispielcode:
class Car { public $brand = 'Audi'; public $model = 'A6'; private $price = 80000; public function __construct() { # code... } } $car = new Car(); $arr = get_object_vars($car); print_r($arr);
Ausführungsergebnis:
Array ( [brand] => Audi [model] => A6 )
Da das $price-Attribut privat ist, wird es nicht angezeigt die zurückgegebene Array-Mitte.
2. Verwenden Sie die Funktion json_decode für die Konvertierung
Wir können die in PHP integrierte Funktion json_decode verwenden, um das Objekt in eine Zeichenfolge im JSON-Format zu konvertieren und es dann in ein Array.
Beispielcode:
class Car { public $brand = 'Audi'; public $model = 'A6'; private $price = 80000; public function __construct() { # code... } } $car = new Car(); $jsonStr = json_encode($car); $arr = json_decode($jsonStr, true); print_r($arr);
Ausführungsergebnis:
Array ( [brand] => Audi [model] => A6 )
Da das $price-Attribut ebenfalls privat ist, wird es nach der Konvertierung nicht in angezeigt Array.
3. Typumwandlung für die Konvertierung verwenden
In PHP können Sie zusätzlich zur Verwendung der Funktionen get_object_vars und json_decode zum Konvertieren von Objekten in Arrays auch die Typumwandlung verwenden. Transformation. Wir können das Objekt in einen Array-Typ umwandeln. Die Schlüssel im zurückgegebenen Array sind die Eigenschaftsnamen und die Werte sind die Eigenschaftswerte.
Beispielcode:
class Car { public $brand = 'Audi'; public $model = 'A6'; private $price = 80000; public function __construct() { # code... } } $car = new Car(); $arr = (array) $car; print_r($arr);
Ausführungsergebnis:
Array ( [brand] => Audi [model] => A6 [*price] => 80000 )
Sie können sehen, dass im Gegensatz zu den Konvertierungsergebnissen der Funktion get_object_vars und der Funktion json_decode der erzwungene Typ Zusätzlich zu öffentlichen Attributen enthält das konvertierte Array auch private Attribute, und Markierungen, die mit * beginnen, stellen private Attribute dar.
Es ist zu beachten, dass, wenn das Objekt eine __toString-Methode enthält und das Objekt in ein Array umgewandelt wird, der Rückgabewert der __toString-Methode als erstes Element des Arrays verwendet wird ( der Schlüssel ist 0 und der Wert ist der Rückgabewert).
4. Verwenden Sie Reflection für die Transformation.
Der Reflection-Mechanismus kann Klassen, Objekte und Methoden analysieren und aufrufen können wir die Eigenschaften und Zugriffsebene (öffentlich, privat oder geschützt) des Objekts abrufen.
Beispielcode:
class Car { public $brand = 'Audi'; public $model = 'A6'; private $price = 80000; public function __construct() { # code... } } $car = new Car(); $reflection = new ReflectionObject($car); $arr = []; foreach ($reflection->getProperties() as $property) { $property->setAccessible(true); $arr[$property->getName()] = $property->getValue($car); } print_r($arr);
Ausführungsergebnis:
Array ( [brand] => Audi [model] => A6 [price] => 80000 )
Es ist ersichtlich, dass beim Erhalten von Objekteigenschaften durch Reflektion die Zugriffsebene (öffentlich, privat oder geschützt), gleichzeitig werden die erhaltenen Attributnamen und Attributwerte in das Array aufgenommen.
Zusammenfassend stellt dieser Artikel verschiedene Methoden zum Konvertieren von Objekten in Arrays in PHP vor. In der tatsächlichen Entwicklung sollte die zu wählende Methode auf den Anforderungen und der tatsächlichen Situation des Codes basieren.
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie obj in ein Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!