Щоб відповісти на власне питання:
Чому PHP перетворює об’єкт JSON в клас?
Погляньте детальніше на вихід кодованого JSON, я розширив приклад, який OP дає трохи:
$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"]}
Формат JSON був отриманий з того самого стандарту, що і JavaScript ( стандарт мов програмування ECMAScript ), і якщо ви подивитеся на формат, він виглядає як JavaScript. Це JSON об'єкт ( {}= об'єкт ) , що має властивість «речі» зі значенням «речі» і має властивість «речі» з його значенням є масив рядків ( []= масив ).
JSON (як JavaScript) не знає асоціативних масивів лише індексованих масивів. Отже, коли JSON кодує асоціативний масив PHP, це призведе до появи рядка JSON, що містить цей масив як "об'єкт".
Тепер ми знову декодуємо JSON за допомогою json_decode($arrayEncoded). Функція декодування не знає, звідки походить ця рядок JSON (масив PHP), тому вона декодує в невідомий об'єкт, який знаходиться stdClassв PHP. Як ви побачите, масив "речі" рядків БЕЗКОШТОВНО в індексований масив PHP.
Також дивіться:
Дякуємо https://www.randomlists.com/things за "речі"