php多维数组计数重复值并添加对应值
Posted
技术标签:
【中文标题】php多维数组计数重复值并添加对应值【英文标题】:php multidimensional array count duplicate values and add corresponding values 【发布时间】:2019-10-04 14:58:09 【问题描述】:我有一个php数组
Array
(
[0] => Array
(
[location] => Kansas
[kit] => Moving Kit
[quantity] => 1
)
[1] => Array
(
[location] => Louisiana
[kit] => Anchored4Life DVD Kit
[quantity] => 1
)
[2] => Array
(
[location] => Louisiana
[kit] => Anchored4Life DVD Kit
[quantity] => 1
)
[3] => Array
(
[location] => Louisiana
[kit] => Anchored4Life DVD Kit
[quantity] => 1
)
[4] => Array
(
[location] => Pennsylvania
[kit] => Anchored4Life DVD Kit
[quantity] => 5
)
[5] => Array
(
[location] => Pennsylvania
[kit] => Welcome Kit
[quantity] => 1
)
)
我想对它进行排序,以便我根据位置和套件以及它们的数量和数量来接收数据,如果套件更薄的话。
Louisiana Anchored4Life DVD Kit
重复,所以我想知道每个州有多少套件订单,例如Louisiana Anchored4Life DVD Kit
数量 3。
我尝试过array_count_values()
,但这仅根据字符串计算,我需要它,因为多个套件和套件未预定义。
【问题讨论】:
那么你最终想要什么?你的问题不清楚。请正确分享预期结果 【参考方案1】:您的问题根本不清楚。但是,我认为您想计算按产品分组的订单。我建议您创建一个非常简单的助手,例如:
public function getCount($items, $kitName) : int
$count = 0;
foreach ($items as $item)
if ($item['kit'] === $kitName)
$count ++;
return $count;
这个助手获取给定套件对应的订单数量
【讨论】:
【参考方案2】:我本来打算继续发帖,但后来我看到了其他答案。
您说的是现场分组,所以我认为这就是您所需要的: 我在关联数组中对位置进行分组,然后对不同的试剂盒进行子阵列,如果试剂盒已经添加,我将数量相加。
foreach($arr as $sub)
if(!isset($res[$sub['location']]))
$res[$sub['location']][$sub['kit']] = $sub;
elseif(!isset($res[$sub['location']][$sub['kit']]))
$res[$sub['location']][$sub['kit']] = $sub;
else
$res[$sub['location']][$sub['kit']]['quantity'] += $sub['quantity'];
var_dump($res);
这会返回:
array(3)
["Kansas"]=>
array(1)
["Moving Kit"]=>
array(3)
["location"]=>
string(6) "Kansas"
["kit"]=>
string(10) "Moving Kit"
["quantity"]=>
string(1) "1"
["Louisiana"]=>
array(1)
["Anchored4Life DVD Kit"]=>
array(3)
["location"]=>
string(9) "Louisiana"
["kit"]=>
string(21) "Anchored4Life DVD Kit"
["quantity"]=>
int(3)
["Pennsylvania"]=>
array(2)
["Anchored4Life DVD Kit"]=>
array(3)
["location"]=>
string(12) "Pennsylvania"
["kit"]=>
string(21) "Anchored4Life DVD Kit"
["quantity"]=>
string(1) "5"
["Welcome Kit"]=>
array(3)
["location"]=>
string(12) "Pennsylvania"
["kit"]=>
string(11) "Welcome Kit"
["quantity"]=>
string(1) "1"
https://3v4l.org/DgPKp
【讨论】:
感谢@Andreas,这正是我想要的以上是关于php多维数组计数重复值并添加对应值的主要内容,如果未能解决你的问题,请参考以下文章