Foreach数组并根据索引创建新数组,然后遍历该数组

时间:2019-01-28 21:24:35

标签: php arrays multidimensional-array

这可能真的很简单,但是它正在踢我的屁股。

我有一个json数组,其中包含ID,类别,标题,得分,评论的大约5,000个视频项。按降序排列。

我正在遍历数组,以基于类别(有10个类别)创建新数组,以供以后遍历。

 foreach ($array as $item) {  // the original array
 $cid=$item['category'];
 $chanmov[$cid]['id'][]=$item['id'];
 $chanmov[$cid]['title'][]=$item['title'];
 $chanmov[$cid]['score'][]=$item['score'];
 $chanmov[$cid]['review'][]=$item['review'];
 }

稍后,我想遍历类别ID,并拉出该类别视频的列表,包括视频ID,标题,得分,评论。

如果我通过类别ID手动print_r-例如print_r($ chanmov ['9'])我得到的数据数组完全符合预期。

但是,我遇到的问题是如何稍后遍历这些值并提取信息

例如     类别动作

id        title            score    review
1753 - Demolition Man [1993] -  5    -  not bad
2123 - Death Wish [1974]     - 10    -  Awesome
3748 - Point Break [1991]   - 6      -  pretty good

我已经尝试过(“ $ chid”是每个类别ID)

foreach($chanmov['$chid'] as $movie) {
echo $movie['id']." - ".$movie['title']."<br/>";
}

给出“为foreach()提供了无效的参数”错误。

我尝试了太多的组合,以至于我的头在旋转,我也尝试了while循环(在更改第一个循环以添加计数器之后),但是没有任何效果。

我知道这应该不难...

顺便说一句,我讨厌数组。

衷心感谢任何帮助

1 个答案:

答案 0 :(得分:1)

似乎您真的想使您的结构如下:

foreach ($array as $item) {  // the original array
    $cid=$item['category'];
    $chanmov[$cid][]=$item;
}

然后,给定$chid的最终循环为:

foreach($chanmov[$chid] as $movie) {
    echo $movie['id']." - ".$movie['title']."<br/>";
}