【问题标题】:How do I remove the extra square bracket from JSON having multiple arrays如何从具有多个数组的 JSON 中删除多余的方括号
【发布时间】:2019-01-29 08:47:23
【问题描述】:

我正在尝试从数组中获取 JSON,但我在输出中得到了一个额外的方括号。

我尝试使用$episode[0] = $podcast->getPodcastByCategoryId($id);,但它只给出不完整的输出意味着它给出了数组中第一次迭代的数据。如果我从 $episode 中删除 [] 也会给出第一次迭代的数据。

$podList = $category->getCategoryPodcast();

if ($podList) {

    foreach ($podList as $items) {

        $id = $items->id;

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

    } 

}

echo json_encode($episode);

我希望只有一个方括号,但我得到的输出带有两个方括号。

这是我从上面的代码中收到的输出:

[
[
    {
      "id": "6",
      "title": "Types of loops in PHP.",
      "description": "s.kfjhsdlufdgf o",
      "duration": "0:05:05",
      "audio": "http://demo.web/uploads/podAudio/PodAudio-2019011511270942.mp3",
      "image": "http://demo.web/uploads/podImage/PodImage-20190115112709469.jpg",
      "category": "2",
      "added_date": "माघ १, २०७५",
      "category_title": "उमेर",
      "author": "John Doe",
      "episodes": "2"
    },
    {
      "id": "4",
      "title": "How to remove square brackets from JSON?",
      "description": "",
      "duration": "",
      "audio": "http://demo.web/uploads/podAudio/PodAudio-20190114111541297.mp3",
      "image": "http://demo.web/uploads/podImage/PodImage-20190114102432145.jpg",
      "category": "2",
      "added_date": "पौष ३०, २०७५",
      "category_title": "उमेर",
      "author": "John Doe",
      "episodes": "2"
    }
  ],
  [
    {
      "id": "5",
      "title": "Hello World!",
      "description": "",
      "duration": "",
      "audio": "http://demo.web/uploads/podAudio/PodAudio-20190114111937115.mp3",
      "image": "http://demo.web/uploads/podImage/PodImage-20190114104302103.jpg",
      "category": "1",
      "added_date": "पौष ३०, २०७५",
      "category_title": "गृह पृष्ठ",
      "author": "John Doe",
      "episodes": "1"
    }
  ]
]

根据@splash58 和@Vinesh Goyal 的建议,我得到这样的输出:

[[
{
  "id": "6",
  "title": "Types of loops in PHP.",
  "description": "s.kfjhsdlufdgf o",
  "duration": "0:05:05",
  "audio": "http://demo.web/uploads/podAudio/PodAudio-2019011511270942.mp3",
  "image": "http://demo.web/uploads/podImage/PodImage-20190115112709469.jpg",
  "category": "2",
  "added_date": "माघ १, २०७५",
  "category_title": "उमेर",
  "author": "John Doe",
  "episodes": "2"
},
{
  "id": "4",
  "title": "How to remove square brackets from JSON?",
  "description": "",
  "duration": "",
  "audio": "http://demo.web/uploads/podAudio/PodAudio-20190114111541297.mp3",
  "image": "http://demo.web/uploads/podImage/PodImage-20190114102432145.jpg",
  "category": "2",
  "added_date": "पौष ३०, २०७५",
  "category_title": "उमेर",
  "author": "John Doe",
  "episodes": "2"
}
  ],

    {
      "id": "5",
      "title": "Hello World!",
      "description": "",
      "duration": "",
      "audio": "http://demo.web/uploads/podAudio/PodAudio-20190114111937115.mp3",
      "image": "http://demo.web/uploads/podImage/PodImage-20190114104302103.jpg",
      "category": "1",
      "added_date": "पौष ३०, २०७५",
      "category_title": "गृह पृष्ठ",
      "author": "John Doe",
      "episodes": "1"
    }
]

但是,第一个数据的方括号呢?

【问题讨论】:

  • 你能记录输出吗?
  • @AlvinTheodora 我已经添加了我得到的输出。

标签: php arrays json brackets


【解决方案1】:

获取时可以合并数组

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

或者在转换为json之前将结果数组展平

echo json_encode(array_merge(...$episode));

demo

【讨论】:

  • 这只是删除第二个数据的方括号,第一个呢?
  • @Alisha 我已将演示添加到 amswer
  • echo json_encode(array_merge(...$episode)); 为我工作。
【解决方案2】:

使用 javascript .concat() 跟随 sn-p。这符合您想要的输出吗?

var data = [[
    {
      "id": "6",
      "title": "Types of loops in PHP.",
      "description": "s.kfjhsdlufdgf o",
      "duration": "0:05:05",
      "audio": "http://demo.web/uploads/podAudio/PodAudio-2019011511270942.mp3",
      "image": "http://demo.web/uploads/podImage/PodImage-20190115112709469.jpg",
      "category": "2",
      "added_date": "माघ १, २०७५",
      "category_title": "उमेर",
      "author": "John Doe",
      "episodes": "2"
    },
    {
      "id": "4",
      "title": "How to remove square brackets from JSON?",
      "description": "",
      "duration": "",
      "audio": "http://demo.web/uploads/podAudio/PodAudio-20190114111541297.mp3",
      "image": "http://demo.web/uploads/podImage/PodImage-20190114102432145.jpg",
      "category": "2",
      "added_date": "पौष ३०, २०७५",
      "category_title": "उमेर",
      "author": "John Doe",
      "episodes": "2"
    }
  ],
  [
    {
      "id": "5",
      "title": "Hello World!",
      "description": "",
      "duration": "",
      "audio": "http://demo.web/uploads/podAudio/PodAudio-20190114111937115.mp3",
      "image": "http://demo.web/uploads/podImage/PodImage-20190114104302103.jpg",
      "category": "1",
      "added_date": "पौष ३०, २०७५",
      "category_title": "गृह पृष्ठ",
      "author": "John Doe",
      "episodes": "1"
    }
  ]
];
var mergedData = data[0].concat(data[1]);
console.log(mergedData)

【讨论】:

  • 是javascript的concat()函数吗?因为使用它让我调用了未定义的函数 concat()。
  • 你分享的代码给出了两次迭代的数据,即[0][1]。未来会添加的其他数组呢?
【解决方案3】:

根据您的代码,$podcast->getPodcastByCategoryId($id); 返回一个数组,以便 t0 消除您可以使用 array_merge 函数的问题

$podList = $category->getCategoryPodcast();
$episode = [];
if ($podList) {

    foreach ($podList as $items) {

        $id = $items->id;

       $episode = array_merge($episode, $podcast->getPodcastByCategoryId($id)

    } 

}

echo json_encode($episode);

希望对你有帮助:)

【讨论】:

  • 这只是删除第二个数据的方括号,第一个呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 2023-03-12
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多