Utiliser PHP pour accéder à des objets avec des noms de propriété invalides ou numériques
Lorsque vous essayez d'utiliser la fonction json_decode() en PHP pour analyser des données JSON , vous pourriez rencontrer des difficultés à accéder aux propriétés dont les noms sont des nombres entiers ou ne pas respecter les conventions de dénomination de variables valides. Ce comportement découle des limitations inhérentes à PHP dans la gestion des objets avec de telles propriétés.
Limitations et bizarreries
Solutions
Solution n°1 : Typecasting manuel
Castez manuellement le objet à un tableau pour accéder aux propriétés avec des noms non valides :
$a = array('123' => '123', '123foo' => '123foo'); $o = (object) $a; $a = (array) $o; echo $a['123']; // OK!
Solution #2 : Option nucléaire
Employer une fonction récursive pour convertir des objets en tableaux :
function recursive_cast_to_array($o) { $a = (array) $o; foreach ($a as &$value) { if (is_object($value)) { $value = recursive_cast_to_array($value); } } return $a; } $arr = recursive_cast_to_array($myVar); $value = $arr['highlighting']['448364']['Data']['0'];
Solution n°3 : Fonctions JSON
Utilisez les fonctions JSON intégrées pour la conversion récursive en tableau :
$arr = json_decode(json_encode($myVar), true); $value = $arr['highlighting']['448364']['Data']['0'];
C'est Il est important de considérer les inconvénients de chaque solution avant de choisir celle qui correspond le mieux à vos besoins. Par exemple, les solutions n°2 et n°3 effectuent des conversions de tableau inutiles, tandis que la solution n°3 nécessite en outre que les propriétés de chaîne soient codées en UTF-8.
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!