Maison > développement back-end > tutoriel php > Comment puis-je accéder aux propriétés d'objet avec des caractères invalides en PHP ?

Comment puis-je accéder aux propriétés d'objet avec des caractères invalides en PHP ?

DDD
Libérer: 2024-12-14 01:57:10
original
632 Les gens l'ont consulté

How Can I Access Object Properties with Invalid Characters in PHP?

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'};
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion

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;
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal