Массив, извлекающий все данные в последнем цикле - PullRequest
0 голосов
/ 28 января 2019

Я написал код для извлечения данных подкаста в соответствии с категориями и получения данных JSON, кажется, что код работает правильно, но в последнем цикле он дает мне данные о целых категориях вместо последнего идентификатора категории.

$podList = $category->getCategoryPodcast();

$output = array();

$json = array();

if ($podList) {

    foreach ($podList as $items) {

        $id = $items->id;

        $episode = $podcast->getPodcastByCategoryId($id);

        $count = count($episode);

        if (!empty($episode)) {

            foreach ($episode as $episodes) {

                    $cat_id = $episodes->category;

                    $output['category_id'] = $cat_id;

                    $output['no. of episode'] = $count;

                    $output['podcast'][] = $episodes;

            } 

        } $json[] = $output;

    } 

}
echo json_encode($json);

die;

Я ожидаю, что данные подкаста конкретной категории, а не данные целых категорий, объединенные вместе в последнем цикле.

Я получаю следующий вывод.

[
  {
    "category_id": "2",
    "no. of episode": 2,
    "podcast": [
      {
        "id": "6",
        "title": "Advanced Javascript course",
        "description": "s.kfjhsdlufdgf o",
        "duration": "0:05:05",
        "audio": "http://shikshak.web/uploads/podAudio/PodAudio-2019011511270942.mp3",
        "image": "http://shikshak.web/uploads/podImage/PodImage-20190115112709469.jpg",
        "category": "2",
        "added_date": "माघ १, २०७५",
        "category_title": "उमेर",
        "author": "John Doe"
      },
      {
        "id": "4",
        "title": "How to display array inside array?",
        "description": "",
        "duration": "",
        "audio": "http://shikshak.web/uploads/podAudio/PodAudio-20190114111541297.mp3",
        "image": "http://shikshak.web/uploads/podImage/PodImage-20190114102432145.jpg",
        "category": "2",
        "added_date": "पौष ३०, २०७५",
        "category_title": "उमेर",
        "author": "John Doe"
      }
    ]
  },
  {
    "category_id": "1",
    "no. of episode": 1,
    "podcast": [
      {
        "id": "6",
        "title": "Advanced Javascript course",
        "description": "s.kfjhsdlufdgf o",
        "duration": "0:05:05",
        "audio": "http://shikshak.web/uploads/podAudio/PodAudio-2019011511270942.mp3",
        "image": "http://shikshak.web/uploads/podImage/PodImage-20190115112709469.jpg",
        "category": "2",
        "added_date": "माघ १, २०७५",
        "category_title": "उमेर",
        "author": "John Doe"
      },
      {
        "id": "4",
        "title": "How to display array inside array?",
        "description": "",
        "duration": "",
        "audio": "http://shikshak.web/uploads/podAudio/PodAudio-20190114111541297.mp3",
        "image": "http://shikshak.web/uploads/podImage/PodImage-20190114102432145.jpg",
        "category": "2",
        "added_date": "पौष ३०, २०७५",
        "category_title": "उमेर",
        "author": "John Doe"
      },
      {
        "id": "5",
        "title": "How to get pretty URLs",
        "description": "",
        "duration": "",
        "audio": "http://shikshak.web/uploads/podAudio/PodAudio-20190114111937115.mp3",
        "image": "http://shikshak.web/uploads/podImage/PodImage-20190114104302103.jpg",
        "category": "1",
        "added_date": "पौष ३०, २०७५",
        "category_title": "गृह पृष्ठ",
        "author": "John Doe"
      }
    ]
  }
]

но я ожидаю получить только один массив как в category_id: 1 нет.эпизодов 1.

[
  {
    "category_id": "2",
    "no. of episode": 2,
    "podcast": [
      {
        "id": "6",
        "title": "Advanced Javascript course",
        "description": "s.kfjhsdlufdgf o",
        "duration": "0:05:05",
        "audio": "http://shikshak.web/uploads/podAudio/PodAudio-2019011511270942.mp3",
        "image": "http://shikshak.web/uploads/podImage/PodImage-20190115112709469.jpg",
        "category": "2",
        "added_date": "माघ १, २०७५",
        "category_title": "उमेर",
        "author": "John Doe"
      },
      {
        "id": "4",
        "title": "How to display array inside array?",
        "description": "",
        "duration": "",
        "audio": "http://shikshak.web/uploads/podAudio/PodAudio-20190114111541297.mp3",
        "image": "http://shikshak.web/uploads/podImage/PodImage-20190114102432145.jpg",
        "category": "2",
        "added_date": "पौष ३०, २०७५",
        "category_title": "उमेर",
        "author": "John Doe"
      }
    ]
  },
  {
    "category_id": "1",
    "no. of episode": 1,
    "podcast": [
      {
        "id": "5",
        "title": "How to get pretty URLs",
        "description": "",
        "duration": "",
        "audio": "http://shikshak.web/uploads/podAudio/PodAudio-20190114111937115.mp3",
        "image": "http://shikshak.web/uploads/podImage/PodImage-20190114104302103.jpg",
        "category": "1",
        "added_date": "पौष ३०, २०७५",
        "category_title": "गृह पृष्ठ",
        "author": "John Doe"
      }      
    ]
  }
]

1 Ответ

0 голосов
/ 28 января 2019

Все категории объединены вместе, потому что ваш массив output определен вне цикла и будет заполняться во время каждой итерации цикла.Чтобы заполнить его только одной категорией, создайте его внутри цикла, поэтому на следующей итерации это будет пустой массив, готовый для заполнения новыми данными

$podList = $category->getCategoryPodcast();

// $output = array();

$json = array();

if ($podList) {

    foreach ($podList as $items) {

        $output = array(); // Create output array here, to fill it with data.

        $id = $items->id;

        $episode = $podcast->getPodcastByCategoryId($id);

        $count = count($episode);

        if (!empty($episode)) {

            foreach ($episode as $episodes) {

                    $cat_id = $episodes->category;

                    $output['category_id'] = $cat_id;

                    $output['no. of episode'] = $count;

                    $output['podcast'][] = $episodes;

            } 

        } 

        $json[] = $output; // fill the $json array with outputs.

    } 

}

echo json_encode($json);

вывод $ json будет выглядеть примерно так

[
    [0] => [
        ['category_id'] => 1
        ...
    ],
    [1] => [...]
]
...