"0"=>array(
'id' => '2',
'b' => 0,
'num' => 4
),
"1"=>array(
'id' => '1',
'b' => 0,
'num' => 4
)
);
$arr2=array(
"1"=>array(
'id' => '3',
'b' => 0,
'num' => 4
),
"2"=>array(
'id' => '2',
'b' => 0,
'num' => 4
)
);
想要合并这个两个数组,判断条件,id,b两个元素都相同的情况的NUM值相加。新数组键值重新排列0 1 2 3
求高手指点。谢谢。
望采纳
<?php
$arr1=array(
"0"=>array(
'id' => '2',
'b' => 0,
'num' => 4
),
"1"=>array(
'id' => '1',
'b' => 0,
'num' => 4
)
);
$arr2=array(
"1"=>array(
'id' => '3',
'b' => 0,
'num' => 4
),
"2"=>array(
'id' => '2',
'b' => 0,
'num' => 4
)
);
$arr3 = array_merge($arr1, $arr2);
function arr_combine($array){//按照id值进行冒泡排序
$length = count($array);
for($i = 0; $i < $length; $i++) {
for($j = $i+1; $j < $length; $j++){
if ($array[$i]['id'] > $array[$j]['id'] ) {
$tmp = $array[$i];
$array[$i] = $array[$j];
$array[$j] = $tmp;
}else if($array[$i]['id'] == $array[$j]['id'] && $array[$i]['b'] == $array[$j]['b']){//按照id,b值是否相同,进行合并
$array[$i]['num'] = $array[$i]['num']+$array[$j]['num'];
$array[$j]['num'] = 0;//此处将合并过的数组的num设置为0
}
}
}
//对结果数组进行处理,如果num为0,则剔除
foreach( $array as $key => $value ) {
if($value['num'] == 0) unset($array[$key]);
}
return $array;
}
var_dump(arr_combine($arr3));
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。