En programmation PHP, le tableau est un type de données très couramment utilisé. Il peut stocker un ensemble de données associées et faciliter les opérations d'ajout, de suppression, de modification et d'interrogation sur ces données. Parfois, nous devons convertir un objet en tableau pour le fonctionnement. Cet article explique comment convertir un objet en tableau en PHP.
En PHP, un objet est un type de données complexe qui est une instance instanciée à partir d'une classe. Chaque objet possède ses propres propriétés et méthodes. Il existe deux méthodes pour convertir des objets en tableaux en PHP : les noms de propriétés spécifiés et les itérateurs.
1. Utilisez le nom d'attribut spécifié
Si nous avons seulement besoin de convertir le nom et la valeur de l'attribut de l'objet en un tableau, nous pouvons utiliser la méthode get_object_vars() de l'objet. Cette méthode renvoie un tableau associatif avec les noms de propriétés comme clés et les valeurs de propriétés comme valeurs. Voici un exemple simple :
class Person { public $name; public $age; function __construct($name, $age) { $this->name = $name; $this->age = $age; } } $p = new Person("John", 25); $arr = get_object_vars($p); print_r($arr);
Le résultat de sortie est :
Array ( [name] => John [age] => 25 )
À partir de l'exemple ci-dessus, nous pouvons voir que l'utilisation de la méthode get_object_vars() nécessite uniquement de transmettre l'objet en tant que paramètre à la fonction. La fonction renvoie un tableau de noms et de valeurs de propriétés.
Parfois, nous devons exclure certains attributs pour éviter d'apparaître dans le tableau. Dans ce cas, vous pouvez utiliser la méthode __sleep() de l'objet. Cette méthode renvoie un tableau contenant les noms de propriétés, à l'exclusion des propriétés inutiles. Voici un exemple :
class Person { public $name; public $age; public $id; function __construct($name, $age, $id) { $this->name = $name; $this->age = $age; $this->id = $id; } public function __sleep() { return array('name', 'age'); } } $p = new Person("John", 25, "123456"); $arr = get_object_vars($p); print_r($arr);
Le résultat de sortie est :
Array ( [name] => John [age] => 25 )
Dans l'exemple ci-dessus, nous pouvons voir que la méthode __sleep() renvoie un tableau composé d'attributs inutiles. Lors de la conversion d'un objet en tableau, seules ces propriétés sont conservées.
2. Utiliser des itérateurs
Si nous avons besoin d'un moyen plus flexible pour convertir des objets en tableaux, nous pouvons utiliser des itérateurs. Un itérateur est une classe qui implémente l’interface Iterator. Cette interface spécifie les méthodes requises pour convertir un objet en tableau.
Le processus d'utilisation d'un itérateur pour convertir un objet en tableau est le suivant :
Voici un exemple :
class Person implements Iterator { private $position = 0; private $data = array( 'name' => 'John', 'age' => 25, 'id' => '123456' ); public function current() { $key = array_keys($this->data)[$this->position]; return array($key => $this->data[$key]); } public function key() { return $this->position; } public function next() { ++$this->position; } public function rewind() { $this->position = 0; } public function valid() { $keys = array_keys($this->data); return isset($keys[$this->position]); } } $p = new Person; $arr = iterator_to_array($p); print_r($arr);
Le résultat de sortie est :
Array ( [0] => Array ( [name] => John ) [1] => Array ( [age] => 25 ) [2] => Array ( [id] => 123456 ) )
Dans l'exemple ci-dessus, nous pouvons voir que lorsque la fonction iterator_to_array() est appelée pour convertir l'itérateur en un tableau, le tableau renvoyé sera composé de tous les attributs Composé d'un nom et d'une valeur.
Résumé : La conversion d'objets en tableaux en PHP est très pratique. Nous pouvons utiliser la méthode ou l'itérateur get_object_vars() pour implémenter la conversion. Quelle que soit la méthode que vous utilisez, vous pouvez convertir l'objet en un type de données facile à manipuler.
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!