У меня в PHP есть следующий массив:
Array
(
[0] => Array
(
[id] => 0
[name] => name1
[short_name] => n1
)
[2] => Array
(
[id] => 2
[name] => name2
[short_name] => n2
)
)
Я хочу, чтобы JSON закодировал его как массив JSON, создав строку, подобную следующей:
[
{
"id":0,
"name":"name1",
"short_name":"n1"
},
{
"id":2,
"name":"name2",
"short_name":"n2"
}
]
Но когда я вызываю json_encode
этот массив, я получаю следующее:
{
"0":{
"id":0,
"name":"name1",
"short_name":"n1"
},
"2":{
"id":2,
"name":"name2",
"short_name":"n2"
}
}
который является объектом, а не массивом.
Как я могу json_encode
вместо этого закодировать свой массив как массив?
0,2
важны? Я в той же ситуации, когда я не могу переиндексировать массив.Array
inJSON
являются только индексированным массивом , поэтому структура, которую вы пытаетесь получить, недействительна Json / Javascript.Массив PHP Associatives - это объекты в JSON, поэтому, если вам не нужен индекс, вы не можете выполнять такие преобразования.
Если вы хотите получить такую структуру, вы можете:
Будет возвращать что-то вроде:
источник
true превращает все свойства в массив (последовательный или нет)
источник
json_encode
$serialized = json_encode($nonContiguousArray);
$unserialize = json_decode($serialized, true);
наконец, порекомендовали бы что-то подобное,finallySerializedInArrayFormat = json_encode($unserialize);
если это то, что вы намереваетесь, вы правы, но казалось немного запутанным решением.Попробуй это,
источник