php 多维数组内部合并,第1张

php 多维数组内部合并,第2张

array(3) {
[0] => array(9) {
[0] => string(1) "1"
[1] => string(3) "175"
[2] => string(1) "2"
[3] => string(2) "22"
[4] => string(2) "22"
[5] => string(2) "-1"
[6] => string(1) "0"
[7] => string(11) "小份+0元"
[8] => int(44)
}
[1] => array(9) {
[0] => string(1) "1"
[1] => string(3) "175"
[2] => string(1) "3"
[3] => string(2) "22"
[4] => string(2) "22"
[5] => string(2) "-1"
[6] => string(1) "0"
[7] => string(11) "小份+0元"
[8] => int(66)
}
[3] => array(9) {
[0] => string(1) "1"
[1] => string(3) "175"
[2] => string(1) "2"
[3] => string(2) "22"
[4] => string(2) "22"
[5] => string(2) "-1"
[6] => string(1) "0"
[7] => string(11) "小份+0元"
[8] => int(44)
}
}

请问如何把一样的一维数组合并
并且如果两者一样 把 [2] => string(1) "2"的值相加后的值作为新的值.键不变

谢谢

----------------------- 以下是精选回复-----------------------

答:只能for loop跑一圈呗
内存占用O(n)
时间O(n)
答:你去PHP节点看一下我也发过一样的帖子,里面有几种方法。*^_^*
答:看不懂你的需求
1、要怎样合并?所有的子数组合并成一个数组?按照什么合并?键相同的合并?
2、 [并且如果两者一样 把 [2] => string(1) "2"的值相加后的值作为新的值.键不变]
值相同就相加,值不同呢?取哪一个的值作为合并后的值?
值相加后跟后面的数组的值就不一样了,这种情况合并后取哪个作为合并后的值?
相同的汉字(非数字)值怎么处理?
答:按照这个规则:所有子数组合并为一个数组,同一个键相同值(数字)相加,不同值取后一个数组此键的值:

$origin = array(
array(1, 175, 2, 22, 22, -1, 0, '小份+0元'),
array(1, 175, 3, 22, 22, -1, 0, '小份+0元'),
array(1, 175, 2, 22, 22, -1, 0, '小份+0元'),
);

$result = array_reduce($origin, function ($result, $item) {
array_walk($item, function (&$v, $k, $prestep) {
if (isset($prestep[$k]) && is_numeric($prestep[$k]) && $prestep[$k] == $v) {
$v += $prestep[$k];
}
}, $result);
return $item;
}, array());

var_dump($result);exit;

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » php 多维数组内部合并

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情