Accès à une propriété d'objet avec un nom invalide
En PHP, il est possible de rencontrer des objets dont les propriétés comportent des caractères illégaux ou invalides, tels que des tirets. (-). Bien que les accesseurs de propriété classiques échouent, il existe des solutions de contournement pour récupérer ces valeurs.
Solution 1 : Notation entre crochets
Pour accéder à une propriété avec un nom non valide, utilisez la notation entre crochets avec le nom de la propriété entre accolades ({}) :
$object->{'todo-items'};
Solution 2 : Nom de la variable et Concaténation
Vous pouvez également attribuer le nom de la propriété à une variable et le concaténer avec la variable $object :
$todolist = 'todo-items'; echo $object->$todolist;
Exemple :
En utilisant l'exemple de vidage d'objet fourni :
$x = (object) [ 'completed-count' => '0', 'description' => 'Description String', 'id' => '12345', 'todo-items' => (object) [ 'todo-item' => (object) [ 'completed' => 'false', 'content' => 'content string here', 'created-on' => '2009-04-16T20:33:31Z', 'creator-id' => '23423', 'id' => '234', 'position' => '1', 'responsible-party-id' => '2844499', 'responsible-party-type' => 'Person', 'todo-list-id' => '234234', ], ], ]; echo $x->{'todo-items'}[0]->{'todo-item'}->content;
Supplémentaire Astuce :
Pour convertir un objet en tableau, vous pouvez utiliser l'extrait de code fourni dans la question et la réponse :
public function toArray() { $array = array(); foreach ($this->_data as $key => $value) { if ($value instanceof StdClass) { $array[$key] = $value->toArray(); } else { $array[$key] = $value; } } return $array; }
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!