2013-04-02 105 views
1

我有一个按项目类型对不同项目进行分组的数组。我按category_id字段对结果进行分组。我要的是输出为组和数量嵌套数组PHP

物品1 = 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> 
+0

+1简单,但很好的问题遍历数组。 –

回答

2

更改您的代码如下

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

为了使用key()函数,您需要使用下一个/电流功能

+0

+1简单和甜蜜的答案。 –

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

key()函数返回当前元素的键,它是由一个阵列的内部指针定义。显然它总是指向最后一个元素。

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);