Проблема с json_encode ()

Помещение кода на прикладном уровне приведет к независимому приложению DB.

Иногда лучше использовать хранимые процедуры по причинам производительности.

Это (как обычно), зависит от требований к приложению.

8
задан cupakob 4 October 2009 в 08:33
поделиться

3 ответа

Скобки «{}» определяют объект, а «[]» используются для массивов в соответствии со спецификацией JSON. Массивы не имеют перечисления, если посмотреть на это с точки зрения распределения памяти. Это просто данные, за которыми следуют другие данные, объекты с другой стороны имеют свойства с именами, и данные назначаются свойствам, поэтому для кодирования такого объекта вы также должны передать правильные имена свойств. Но для массива вам не нужно указывать индексы, потому что они всегда будут 0..n, где n - длина массива - 1, единственное, что имеет значение, - это порядок данных.

$array = array("a","b","c");
json_encode($array); // ["a","b","c"]
json_encode($array, JSON_FORCE_OBJECT); // {"0":"a", "1":"b","2":"c"}

Причина, по которой JSON_FORCE_OBJECT вынуждает его использовать «0,1,2», заключается в том, что для назначения данных объекту возражения вы должны назначить его свойству, поскольку разработчик не дает имен свойств (только данные), кодировщик использует индексы массивов в качестве имен свойств, потому что это единственные имена, которые имеют смысл.

Примечание: согласно Руководству по PHP параметры параметров доступны только в PHP 5.3.

Для более старых версий PHP обратитесь к ответу Челмерца, чтобы узнать, как заставить json_encode использовать индексы.

22
ответ дан 5 December 2019 в 05:26
поделиться

Как сказал Гамбо, на стороне JS это не имеет значения. Чтобы принудительно внедрить PHP, попробуйте следующее:

$a = new stdClass();
$a->{0} = "Kum";
$a->{1} = "Kumpel";
echo json_encode($a);

Не очень удобно, я бы придерживался обозначения массива.

7
ответ дан 5 December 2019 в 05:26
поделиться

Поскольку у вас есть массив PHP только с числовыми ключами, нет необходимости использовать объект JavaScript. Но если он вам нужен, попробуйте предложение Майку Мори.

0
ответ дан 5 December 2019 в 05:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: