对嵌套数组进行分组和计数PHP

时间:2013-04-02 04:58:27

标签: php arrays multidimensional-array

我有一个数组按项目类型分组不同的项目。我正在按category_id字段对结果进行分组。我想要的是输出

item1 = 3
item2 = 2

如果我执行var_dump()

,我的数组看起来像这样
array(2) {
  ["item1"]=>
   array(3) {
    [0]=>
    string(1) "3"
    [2]=>
    string(1) "5"
    [4]=>
    string(1) "7"
  }
  ["item2"]=>
  array(2) {
    [1]=>
    string(1) "4"
    [3]=>
    string(1) "6"
  }
}

以下是我正在使用的代码:

            $items = Item::where('order_id','=',$payload["orderId"])->get();
            $itemsGrouped = [];
            $count = 0;
            foreach($items as $item){
                $itemsGrouped[$item->category_id][$count] = $item->id;
                $count++;
            }

           foreach($itemsGrouped as $grp){
               echo key($itemsGrouped).'='.count($grp).'<br>';
           };

这就是我目前得到的。计数正在运行但不是$ itemsGrouped键。这是重复的。

item2=3<br>item2=2<br> 

3 个答案:

答案 0 :(得分:2)

更改您的代码如下

foreach($itemsGrouped as $key => $grp){
     echo $key.'='.count($grp).'<br>';
};

为了使用key()函数,您需要使用next / current函数遍历数组

答案 1 :(得分:1)

       foreach($itemsGrouped as $key => $grp){
           echo $key.'='.count($grp).'<br>';
       };

key()函数返回当前元素的键,该键由数组的内部指针定义。显然它始终指向最后一个元素。

答案 2 :(得分:0)

 $myarray = "Your array";

    $count = array();  // create an empty array

    foreach($myarray as $arr) {  
        foreach($arr as $a) {  
            $key = array_keys($a); 
            $count[$key[0]]++;
        }
    }

    print_r($count);