1

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

项目1 = 3
项目 2 = 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> 
4

3 回答 3

2

更改您的代码如下

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

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

于 2013-04-02T05:07:11.373 回答
1
       foreach($itemsGrouped as $key => $grp){
           echo $key.'='.count($grp).'<br>';
       };

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

于 2013-04-02T05:03:28.633 回答
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);
于 2013-04-02T05:07:59.730 回答