2013-04-02 106 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);