json_decode возвращает ноль, когда значение пусто - PullRequest
2 голосов
/ 28 марта 2012

Я сталкивался с этой проблемой при попытке decode json в массив , например,

работает нормально вот так

$year = 2012;
$month = 3;

$json = '{"year":'.$year.', "month":'.$month.'}';
$config = json_decode($json,true);

var_dump($config); // return array.

но если я установлю одну из переменных на null, например,

$year = 2012;
$month = null;

$json = '{"year":'.$year.', "month":'.$month.'}';
$config = json_decode($json,true);

var_dump($config); // return null

Я после этого результата,

array
  'year' => int 2012
  'month' => null

Как я могу вернуть такой результат?

1 Ответ

3 голосов
/ 28 марта 2012

Это потому, что если вы выполните

$json = '{"year":'.$year.', "month":'.$month.'}';

, то получите:

{"year":2012, "month":}

Что само по себе не является допустимым json, поэтому вы получаете NULL, если можете помочьэто сделать

$month = "null"

Я получил следующий код:

$year = 2012;
$month = "null";

$json = '{"year":'.$year.', "month":'.$month.'}';
echo $json . "\n";
$config = json_decode($json,true);
var_dump($config);

результаты:

{"year":2012, "month":null}
array(2) {
  ["year"]=>
  int(2012)
  ["month"]=>
  NULL
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...