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"的值相加后的值作为新的值.键不变
谢谢
1
ryd994 2015-04-17 19:35:20 +08:00 via Android
只能for loop跑一圈呗
内存占用O(n) 时间O(n) |
3
jinganchuqi 2015-04-18 00:38:47 +08:00 via Android
你去PHP节点看一下我也发过一样的帖子,里面有几种方法。*^_^*
|
4
feiyuanqiu 2015-04-18 01:38:23 +08:00
看不懂你的需求
1、要怎样合并?所有的子数组合并成一个数组?按照什么合并?键相同的合并? 2、 [并且如果两者一样 把 [2] => string(1) "2"的值相加后的值作为新的值.键不变] 值相同就相加,值不同呢?取哪一个的值作为合并后的值? 值相加后跟后面的数组的值就不一样了,这种情况合并后取哪个作为合并后的值? 相同的汉字(非数字)值怎么处理? |
5
feiyuanqiu 2015-04-18 02:07:04 +08:00
按照这个规则:所有子数组合并为一个数组,同一个键相同值(数字)相加,不同值取后一个数组此键的值:
$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; |