Pour répondre à la question réelle:
Pourquoi PHP transforme-t-il l'objet JSON en classe?
Regardez de plus près la sortie du JSON encodé, j'ai étendu un peu l'exemple que l'OP donne un peu:
$array = array(
'stuff' => 'things',
'things' => array(
'controller', 'playing card', 'newspaper', 'sand paper', 'monitor', 'tree'
)
);
$arrayEncoded = json_encode($array);
echo $arrayEncoded;
//prints - {"stuff":"things","things":["controller","playing card","newspaper","sand paper","monitor","tree"]}
Le format JSON est dérivé du même standard que JavaScript ( ECMAScript Programming Language Standard ) et si vous regardez le format, il ressemble à JavaScript. C'est un objet JSON ( {}
= objet ) ayant une propriété "stuff" avec la valeur "things" et une propriété "things" avec sa valeur étant un tableau de chaînes ( []
= array ).
JSON (en tant que JavaScript) ne connaît pas les tableaux associatifs uniquement les tableaux indexés. Ainsi, lorsque JSON encodera un tableau associatif PHP, cela se traduira par une chaîne JSON contenant ce tableau comme un "objet".
Maintenant, nous décodons à nouveau le JSON en utilisant json_decode($arrayEncoded)
. La fonction de décodage ne sait pas d'où provient cette chaîne JSON (un tableau PHP), elle est donc décodée en un objet inconnu, qui est stdClass
en PHP. Comme vous le verrez, le tableau de chaînes "choses" va se décoder en un tableau PHP indexé.
Regarde aussi:
Merci à https://www.randomlists.com/things pour les `` choses ''