Доброго вечера. Подскажите пожалуйста по json.
Получаю:
$data['movie'] = $this->Play_lib->getmovie($id);
$data['music'] = $this->Play_lib->getmusic($id);
echo json_encode($data);
Отдает:
{
"movie": [
{
"id": "12",
"title": "Test Movie",
"image": "s00f04f3.jpg",
"type": "movie"
},
],
"music": [
{
"id": "34",
"title": "Test Music",
"image": "57a9773a.jpg",
"type": "music"
}
]
}
Каким образом сделать чтобы отдавало так:
[
{
"id": "12",
"title": "Test Movie",
"image": "s00f04f3.jpg",
"type": "movie"
},
{
"id": "34",
"title": "Test Music",
"image": "57a9773a.jpg",
"type": "music"
}
]
Спасибо.
Итак, ключи movie И music в результирующем json получаете поскольку сами их туда и записываете. Чтобы избавиться от этих строковых ключей, просто добавьте элементы в массив:
$data[] = $this->Play_lib->getmovie($id);
$data[] = $this->Play_lib->getmusic($id);
Следующий вопрос - откуда берется вложенные скобки "movie": [ { } ]. Скобки эти обозначают, что результатом работы методов getmovie/getmusic являются массивы, которые в данном случае состоят из 1 элемента.
С виду, вызов getmovie($id) похож на извлечение одного элемента по указанному ID. Здесь вам виднее, и если метод должен возвращать единственный элемент, то измените его, чтобы так и было, и возвращался объект, а не массив из одного объекта.
С другой стороны, возможно недопонимание, когда id это идентификатор, к примеру, жанра, а getmusic возвращает список соответствующих композиций.
В любом случае, если вы не можете изменить вышеуказанные методы, а из результата работы методов вам необходим только один (или единственный) элемент, то ваш код должен принимать следующий вид:
$data[] = array_shift($this->Play_lib->getmovie($id));
$data[] = array_shift($this->Play_lib->getmovie($id));
echo json_encode($data);
Используемый метод array_shift() возвращает первый элемент входного массива, или null.
Решение проблемы путем добавления array_merge():
$movie = $this->Play_lib->getmovie($id);
$music = $this->Play_lib->getmusic($id);
echo json_encode(array_merge($movie, $music));
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости