simdjson_decode Декодирует строку JSON &reftitle.description; mixedsimdjson_decode stringjson boolassociative&false; intdepth512 Принимает строку в кодировке JSON и преобразовывает её в значение PHP. При этом будет использована более быстрая реализация Simultaneous Instruction, Multiple Data, чем в функции json_decode, если это поддерживается архитектурой компьютера. &reftitle.parameters; json Декодируемая строка (string) в json формате. Функция работает только со строками в кодировке UTF-8. Функция анализирует допустимые входные данные, которые функция json_decode может декодировать, при условии, что их длина не превышает 4 Гб. associative При значении &true;, объекты JSON будут возвращены как ассоциативные массивы (&array;); при значении &false;, объекты JSON будут возвращены как объекты (&object;). depth Максимальная глубина вложенности декодируемой структуры. Значение должно быть больше 0 и меньше или равно 2147483647. Вызывающие команды должны использовать достаточно маленькие значения, поскольку большая глубина требуют больше места в буфере и увеличивают глубину рекурсии, в отличие от текущей реализации функции json_decode. &reftitle.returnvalues; Возвращает значение, закодированное в параметре json в соответствующем типе PHP. Значения true, false и null возвращаются как &true;, &false; и &null; соответственно. &reftitle.errors; Если параметр json недействителен, то начиная с версии PECL simdjson 2.1.0 выбрасывается исключение SimdJsonException, тогда как ранее выбрасывалось исключение RuntimeException. Если параметр depth находится вне допустимого диапазона, то начиная с версии PECL simdjson 3.0.0 выбрасывается исключение SimdJsonValueError, тогда как ранее выдавалась ошибка уровня E_WARNING. &reftitle.examples; Примеры использования <function>simdjson_decode</function> ]]> &example.outputs; int(1) ["b"]=> int(2) ["c"]=> int(3) } array(3) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) } ]]> Доступ к недопустимым свойствам объекта Доступ к элементам объекта, содержащим символы, не разрешённые соглашением PHP об именовании (например, дефис), может быть осуществлён путём заключения имени элемента в фигурные скобки и апостроф. {'foo-bar'}; // 12345 ?> ]]> Распространённые ошибки при использовании <function>simdjson_decode</function> ]]> Ошибки <parameter>depth</parameter> array -> array -> string) $json = json_encode( [ 1 => [ 'English' => [ 'One', 'January' ], 'French' => [ 'Une', 'Janvier' ] ] ] ); // Отображение ошибок для разных глубин. var_dump(simdjson_decode($json, true, 4)); try { var_dump(simdjson_decode($json, true, 3)); } catch (SimdJsonException $e) { echo "Попался: ", $e->getMessage(), "\n"; } ?> ]]> &example.outputs; array(2) { ["English"]=> array(2) { [0]=> string(3) "One" [1]=> string(7) "January" } ["French"]=> array(2) { [0]=> string(3) "Une" [1]=> string(7) "Janvier" } } } Попался: The JSON document was too deep (too many nested objects and arrays) ]]> <function>simdjson_decode</function> больших целых чисел ]]> &example.outputs; float(1.2345678901235E+19) } ]]> &reftitle.notes; Спецификация JSON - это не JavaScript, а подмножество JavaScript. В случае возникновения ошибки декодирования выбрасывается исключение SimdJsonException, а SimdJsonException::getCode и SimdJsonException::getMessage могут быть использованы для определения точной природы ошибки. &reftitle.seealso; json_encode json_decode