Чтобы ответить на актуальный вопрос:
Почему 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 объект ({}
= объект ), имеющий свойство "stuff" со значением "вещи" и имеющий свойство "вещи", значение которого является массивом строк ([]
= массив ).
JSON (как JavaScript) не знает ассоциативных массивов, только индексированные массивы. Так что, когда JSON кодирует ассоциативный массив PHP, это приведет к строке JSON, содержащей этот массив в качестве «объекта».
Теперь мы снова декодируем JSON, используя json_decode($arrayEncoded)
. Функция декодирования не знает, откуда взялась эта строка JSON (массив PHP), поэтому она декодируется в неизвестный объект, который в PHP равен stdClass
. Как вы увидите, массив строк "things" будет декодирован в индексированный массив PHP.
Также см .:
Спасибо https://www.randomlists.com/things за «вещи»