如何解决PHP减少和合并?一个数组分几步
我正在尝试减少/合并一个看起来像这样的数组
$test = Array
(
[0] => Array
(
[id] => 150023
[rowtext] => part 1
[rowpartnumber] => 4360
[qty] => 2.00
[min_delper] => 2021-07-28
)
[1] => Array
(
[id] => 150026
[rowtext] => part 2
[rowpartnumber] => 4360
[qty] => 2.00
[min_delper] => 2021-07-29
)
[2] => Array
(
[id] => 150023
[rowtext] => part 3
[rowpartnumber] => 4361
[qty] => 4.00
[min_delper] => 2021-08-22
)
[3] => Array
(
[id] => 150023
[rowtext] => part 4
[rowpartnumber] => 4362
[qty] => 2.00
[min_delper] => 2021-09-22
)
);
我想对 [qty] 求和,其中 [rowpartnumber] 相同,我可以用
$summa_test = array_reduce($test,function ($a,$b) {
isset($a[$b['rowpartnumber']]) ? $a[$b['rowpartnumber']]['qty'] += $b['qty'] : $a[$b['rowpartnumber']] = $b;
return $a;
});
但我也想将 [id] 中的 [rowpartnumer] 相同并将其添加到 [id] 所以输出应该是这样的:
Array
(
[0] => Array
(
[id] => 150023 150026
[rowtext] => part 1
[rowpartnumber] => 4360
[qty] => 4.00
[min_delper] => 2021-07-28
)
[1] => Array
(
[id] => 150023
[rowtext] => part 3
[rowpartnumber] => 4361
[qty] => 4.00
[min_delper] => 2021-08-22
)
[2] => Array
(
[id] => 150023
[rowtext] => part 4
[rowpartnumber] => 4362
[qty] => 2.00
[min_delper] => 2021-09-22
)
);
我似乎无法理解它,所以各位专家的帮助会很棒,谢谢
解决方法
如果 id
已经存在,您必须修改回调函数以将 rowpartnumber
连接到前一个。像这样:
$summa_test = array_reduce($test,function ($carry,$item) {
if (isset($carry[$item['rowpartnumber']])) {
$carry[$item['rowpartnumber']]['qty'] += $item['qty'];
$carry[$item['rowpartnumber']]['id'] .= " ".$item['id'];
}
else {
$carry[$item['rowpartnumber']] = $item;
}
return $carry;
});
我不知道这是否是一个问题,但由于连接 id
将成为一个字符串,其中找到多个 id - 但只有一个时仍然是整数。如果这对您来说是个问题,有两种选择:
- 即使只有一个
id
也转换为字符串 - 使用数组存储多个 ID。
(我将参数名称更改为 PHP 文档中使用的名称 - 您可以将其改回来,但通常保持这种方式是个好主意 - 其他人会更容易理解您的代码。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。