怎么样累加两个php数组,键相同的累加,不同的合并

yak 发布于 2012/08/08 15:08
阅读 3K+
收藏 4
PHP
 $ar1=array('name'=>33,"price"=>200);


 $ar2=array('name'=>44,'type'=>1);

怎么样累加两个数组
得到 
  array('name'=>77,'type'=>1,'price'=>200);

加载中
0
游侠
游侠
$ar1=array('name'=>33,"price"=>200);
$ar2=array('name'=>44,'type'=>1);

$res = array();
foreach($ar1 as $k=>$v){
    if(isset($ar2[$k])){
        $res[$k] = $ar1[$k] + $ar2[$k];
        unset($ar1[$k],$ar2[$k]);                                                                                                                                                                                                            
    }   
}
$res = array_merge($res,$ar1,$ar2);

var_dump($res);

0
yak
yak
 $dif = array_diff_key($ar2,$ar1);
foreach ( $ar1 as $key=>$val) {
    if(isset($ar2[$key])){
      $ar1[$key]=$val+$ar2[$key];
}
}
$array =  $ar1+$dif;

这个性能最好

0
朱__朱
朱__朱
$ar1=array('name'=>33,"price"=>200);
$ar2=array('name'=>44,'type'=>1);
$res = array();
foreach($ar1 as $k=>$v){
	if(isset($ar2[$k])){
		$res[$k] = $ar1[$k] + $ar2[$k];
	}
}
$result = $res+$ar1+$ar2;

这个性能才好....一次遍历,没使用函数

 

 

0
飞晏
飞晏
foreach($ar1 as $k=>&$v){
    isset($ar2[$k]) AND $v += $ar2[$k];
}
$result = $ar1+$ar2;
var_dump($result);

借鉴LS哥们儿的修改下

老陌
老陌
反正都要相加, 引用也可以省掉~
飞晏
飞晏
回复 @yak : sorry,我写反了,已经更正。
yak
yak
$ar2+$ar1;会洗白 应该为 $result = $ar1+$ar2;
0
路扬
路扬
这是在show优雅吗
0
yak
yak

show 引用 

这是php的精华

0
yak
yak

顺便比较了下运行效率

0
pooy
pooy

引用来自“yak”的答案

顺便比较了下运行效率

这在哪儿 算出来的???
返回顶部
顶部