Я получаю следующие outout:
"sendto": {
"0": {
"userid": "1",
"username": "jagat",
"isAccepted": "NO"},
"1": {
"userid": "4",
"username": "Rahil",
"isAccepted": "NO"},
}
Я хочу, как следующий вывод в ответе json:
"sendto": [
{
"userid": "1",
"username": "jagat",
"isAccepted": "NO"},
{
"userid": "4",
"username": "Rahil",
"isAccepted": "NO"}
]
Пожалуйста, помогите мне. Спасибо
PHP переводит массивы в объекты с json_encode
если ключи не являются последовательными числами, начинающимися с 0, потому что в JavaScript массив не имеет ключей (у него есть индексы), но в PHP это возможно.
Так что-то вроде этого в PHP …
$data = [["foo" => "bar"],["baz" => "quix"],3=>["quax" => "quacks"]];
echo json_encode($data);
Дает тебе…
{ "0": { "foo": "bar"}, "1": { "baz": "quix"}, "3": { "quax": "крякать"} }
Так что если вы всегда хотите массив, вы должны обязательно использовать array_values
перед кодированием с json_encode
,
$data = [["foo" => "bar"],["baz" => "quix"],3=>["quax" => "quacks"]];
echo json_encode(array_values($data));
Теперь вы получаете …
[ { "foo": "bar"}, { "baz": "quix"}, { "quax": "крякать"} ]
Поскольку ключи массива вернутся к 0, 1, 2
Это означает, что их можно безопасно сериализовать в JSON в виде массива. В противном случае PHP предполагает, что вы намеревались создать объект с ключами "0", "1", "3"
,
Других решений пока нет …