Что нужно помнить, используя json в php
В этой статье я расскажу, с какими проблемами вы можете столкнуться при использовании json в php.
Рассмотрим два примера.
Пример 1. Обычный нумерованный массив.
$myArray = array('firstValue', 'secondValue');
$myArrayJsonEncoded = json_encode($myArray);
print_r(json_decode($myArrayJsonEncoded));
//Array ( [0] => firstValue [1] => secondValue )
Пример2. Ассоциативный массив.
$myAssotiativeArray = array(
'firstKey' => 'firstValue',
'secondKey' => 'secondValue'
);
$myAssotiativeArrayJsonEncoded = json_encode($myAssotiativeArray);
print_r(json_decode($myAssotiativeArrayJsonEncoded));
//stdClass Object ( [firstKey] => firstValue [secondKey] => secondValue )
Во 2м примере вместо ассоциативного массива нам возвращается объект! Дело в том, что в JavaScript понятие ассоциативного массива как такового нет. Обычные массивы могут иметь только числовые индексы, потому для эмуляции ассоциативных массивов, ключами которых могут быть в том числе и строковые значения, используются объекты. Поэтому на декодировании мы получили не массив, а объект класса stdClass.
В этом случае, в функцию json_decode можно передать второй параметр - true, тогда результат получим в виде массива:
$myAssotiativeArrayJsonEncoded = json_encode($myAssotiativeArray);
print_r(json_decode($myAssotiativeArrayJsonEncoded, true));
//Array ( [firstKey] => firstValue [secondKey] => secondValue )
Комментарии:
Нету комментариев для вывода...