从另一个数组项列表创建一个分组数组

时间:2012-04-10 21:18:03

标签: php arrays

我有一系列带有ID和类别的应用程序:

[apps] => Array
            (
                [0] => stdClass Object
                    (
                        [id] => 0
                        [categoryid] => 0
                    )

                [1] => stdClass Object
                    (
                        [id] => 31265
                        [categoryid] => 12
                    )

                [2] => stdClass Object
                    (
                        [id] => 15965
                        [categoryid] => 2
                    )

                [3] => stdClass Object
                    (
                        [id] => 16554
                        [categoryid] => 12
                    )
)

我正在尝试根据此请求获取某个类别的所有应用。因此,结果输出为:

For CategoryId 12:
----------------
[apps] => Array
            (
                [0] => 31265
                [1] => 16554
            )

For CategoryId 2:
----------------
[apps] => Array
            (
                [0] => 15965
            )

For CategoryId 0:
----------------
[apps] => Array
            (
                [0] => 0
            )

我相信我需要使用嵌套的foreach循环,但是有一种有效的方法吗?

由于

1 个答案:

答案 0 :(得分:3)

您可以循环浏览它们,并将它们放入类别数组中:

foreach ( $apps as $app ) {
  $catArray[ $app[CategoryID] ][] = $app;
}

这应该会产生一个数组,其键表示一个类别,其嵌套数组代表该类别中的那些应用程序。

我已经在线编写了这个演示:http://codepad.org/WZXIvQ58