Per rispondere alla domanda effettiva:
Perché PHP trasforma l'oggetto JSON in una classe?
Dai un'occhiata più da vicino all'output del JSON codificato, ho esteso un po 'l'esempio che l'OP sta dando:
$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"]}
Il formato JSON è stato derivato dallo stesso standard di JavaScript ( ECMAScript Programming Language Standard ) e se guardi il formato sembra JavaScript. È un oggetto JSON ( {}
= oggetto ) avente una proprietà "roba" con valore "cose" e ha una proprietà "cose" il cui valore è un array di stringhe ( []
= array ).
JSON (come JavaScript) non conosce gli array associativi solo gli array indicizzati. Quindi, quando JSON codifica un array associativo PHP, questo risulterà in una stringa JSON contenente questo array come un "oggetto".
Ora stiamo decodificando di nuovo il JSON usando json_decode($arrayEncoded)
. La funzione di decodifica non sa da dove proviene questa stringa JSON (un array PHP), quindi si sta decodificando in un oggetto sconosciuto, che si trova stdClass
in PHP. Come vedrai, l'array di stringhe "things" si decodificherà in un array PHP indicizzato.
Vedi anche:
Grazie a https://www.randomlists.com/things per le "cose"