我有一个数组按项目类型分组不同的项目。我正在按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>
答案 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);