php 二维数组合并 相同键名的值相加 10
例如将下面两个数据合并:$a=array('01'=>array('count'=>1,'amount'=>100),'02'=>array('count'=>2,'am...
例如将下面两个数据合并:
$a = array('01' => array('count'=>1, 'amount'=>100),
'02' => array('count'=>2, 'amount'=>200));
$b = array('01' => array('count'=>4, 'amount'=>300),
'02' => array('count'=> 5, 'amount'=>400));
预期结果为:
Array
(
[01] => Array
(
[count] => 5
[amount] => 400
)
[02] => Array
(
[count] => 7
[amount] => 600
)
)
不好意思,忘记了一种情况,当数组中key不同时,则追加,即:
当 $a = array('01' => array('count'=>1, 'amount'=>100),
'02' => array('count'=>2, 'amount'=>200),
'03' => array('count'=>3, 'amount'=>250) );
$b = array('01' => array('count'=>4, 'amount'=>300),
'02' => array('count'=> 5, 'amount'=>400));
结果为:
Array
(
[01] => Array
(
[count] => 5
[amount] => 400
)
[02] => Array
(
[count] => 7
[amount] => 600
)
[03] => Array
(
[count] => 3
[amount] => 250
)
) 展开
$a = array('01' => array('count'=>1, 'amount'=>100),
'02' => array('count'=>2, 'amount'=>200));
$b = array('01' => array('count'=>4, 'amount'=>300),
'02' => array('count'=> 5, 'amount'=>400));
预期结果为:
Array
(
[01] => Array
(
[count] => 5
[amount] => 400
)
[02] => Array
(
[count] => 7
[amount] => 600
)
)
不好意思,忘记了一种情况,当数组中key不同时,则追加,即:
当 $a = array('01' => array('count'=>1, 'amount'=>100),
'02' => array('count'=>2, 'amount'=>200),
'03' => array('count'=>3, 'amount'=>250) );
$b = array('01' => array('count'=>4, 'amount'=>300),
'02' => array('count'=> 5, 'amount'=>400));
结果为:
Array
(
[01] => Array
(
[count] => 5
[amount] => 400
)
[02] => Array
(
[count] => 7
[amount] => 600
)
[03] => Array
(
[count] => 3
[amount] => 250
)
) 展开
2个回答
展开全部
foreach ($b as $nodeIndex => $oneNode)
{
foreach ($oneNode as $key => $value)
{
$a[$nodeIndex][$key] += $value;
}
}
print_r($a);
{
foreach ($oneNode as $key => $value)
{
$a[$nodeIndex][$key] += $value;
}
}
print_r($a);
追问
不好意思,忘记了一种情况,当数组中key不同时,则追加,看我的问题补充,多谢!
追答
直接试试看, 应该问题也不大
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你参考下吧, 我写的代码。就是不知道为什么会输出3个点,里面是还是有大小的,满意请加分,我自己测试过了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$k='';$id='';//获取一级的健,值中的ID用于判断
foreach ($arr as $key => $value) {
/*
array (size=3)
0 => string 'Admin' (length=5)
1 => string 'Teacher' (length=7)
2 => string 'index' (length=5)
*/
$nameArr=explode('/',$value['name']);//分割字符串为数组
if($nameArr['2']=='index'){
$k=$key;
$id=$value['id'];
continue;
}
if($value['id']==$id)
{
//var_dump($value);//这里都能输出子栏目的值
$arr[$k]['erji'][]=$value;//这里我不知道为什么输出3个。。。
unset($arr[$key]);//去除原先数组中的东西
continue;
}
}
var_dump($arr);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$k='';$id='';//获取一级的健,值中的ID用于判断
foreach ($arr as $key => $value) {
/*
array (size=3)
0 => string 'Admin' (length=5)
1 => string 'Teacher' (length=7)
2 => string 'index' (length=5)
*/
$nameArr=explode('/',$value['name']);//分割字符串为数组
if($nameArr['2']=='index'){
$k=$key;
$id=$value['id'];
continue;
}
if($value['id']==$id)
{
//var_dump($value);//这里都能输出子栏目的值
$arr[$k]['erji'][]=$value;//这里我不知道为什么输出3个。。。
unset($arr[$key]);//去除原先数组中的东西
continue;
}
}
var_dump($arr);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询