@AKLZephyr

Не корректная работа json_decode?

Почему json_decode(123) выдает 123, а не ошибку?

<?php

$string1 = json_decode(123, true);
$string2 = json_decode('123', true);
$string3 = json_decode('{"a": 123}', true);

var_dump($string1, $string2, $string3);


int(123)
int(123)
array(1) {
  ["a"]=>
  int(123)
}


php
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
A value can be a string in double quotes, or a number, or true or false or null, or an object or an array. These structures can be nested.

A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes. A character is represented as a single character string. A string is very much like a C or Java string.

A number is very much like a C or Java number, except that the octal and hexadecimal formats are not used.

https://www.json.org/json-en.html

Ну это не считая привычных всем массивов и объектов

Если предположить, что скаляры были бы не доступны, то нельзя было бы делать массив скаляров:
[
   "aaa",
   "bbb",
   "1234"
]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
а почему должно выдавать ошибку? и какую?
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что 123 приводится к строке '123', а это валидный JSON, безо всяких ошибок.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы