Чтобы ответить на актуальный вопрос:
Почему 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. Как вы увидите, массив строк "things" БУДЕТ декодирован в индексированный массив PHP.
Также см:
Спасибо https://www.randomlists.com/things за "вещи"