Dans le développement PHP, il est parfois nécessaire de convertir un objet en tableau pour faciliter le transfert et le traitement des données. Cet article explique comment convertir des objets en tableaux en PHP.
1. Utilisez la fonction get_object_vars pour la conversion
La fonction intégrée de PHP get_object_vars peut obtenir la représentation matricielle de tous les attributs visibles dans l'objet (la clé est le nom de l'attribut et la valeur est la valeur de l'attribut). Nous pouvons utiliser le tableau renvoyé directement comme tableau requis.
Exemple de code :
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);
Résultat de l'exécution :
Array ( [brand] => Audi [model] => A6 )
On peut voir que puisque l'attribut $price est privé, il n'apparaîtra pas dans le milieu du tableau renvoyé.
2. Utilisez la fonction json_decode pour la conversion
Nous pouvons utiliser la fonction intégrée PHP json_decode pour convertir l'objet en chaîne au format JSON, puis le convertir en un tableau.
Exemple de code :
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);
Résultat de l'exécution :
Array ( [brand] => Audi [model] => A6 )
De même, puisque l'attribut $price est privé, il n'apparaîtra pas après la conversion dans le tableau.
3. Utilisez la conversion de type pour la conversion
En PHP, en plus d'utiliser la fonction get_object_vars et la fonction json_decode pour convertir des objets en tableaux, vous pouvez également utiliser la conversion de type cast. Transformation. Nous pouvons forcer l'objet à entrer dans un type tableau. Les clés du tableau renvoyé sont les noms de propriété et les valeurs sont les valeurs de propriété.
Exemple de code :
class Car { public $brand = 'Audi'; public $model = 'A6'; private $price = 80000; public function __construct() { # code... } } $car = new Car(); $arr = (array) $car; print_r($arr);
Résultat de l'exécution :
Array ( [brand] => Audi [model] => A6 [*price] => 80000 )
Vous pouvez voir que, contrairement aux résultats de conversion de la fonction get_object_vars et de la fonction json_decode, le type forcé En plus des attributs publics, le tableau converti comprendra également des attributs privés, et les marqueurs commençant par * représentent les attributs privés.
Il est à noter que s'il existe une méthode __toString dans l'objet, lorsque l'objet est converti en tableau, la valeur de retour de la méthode __toString sera utilisée comme premier élément du tableau ( la clé est 0 et la valeur est la valeur de retour).
4. Utiliser la réflexion pour la transformation
Le mécanisme de réflexion de PHP peut analyser et appeler des classes, des objets et des méthodes. La réflexion fournit la fonction d'obtenir les propriétés et les méthodes des objets. , nous pouvons obtenir les propriétés et le niveau d'accès (public, privé ou protégé) de l'objet.
Exemple de code :
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);
Résultat de l'exécution :
Array ( [brand] => Audi [model] => A6 [price] => 80000 )
On peut voir que lors de l'obtention des propriétés de l'objet par réflexion, le niveau d'accès (public, privé ou protégé), en même temps, les noms d'attributs et les valeurs d'attribut obtenus sont inclus dans le tableau.
Pour résumer, cet article présente diverses méthodes de conversion d'objets en tableaux en PHP. Dans le développement réel, la méthode à choisir doit être basée sur les exigences et la situation réelle du code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!