操作两个数组值的-
?
我有02个阵列:
$before =
array("a"=>400,
"b"=>500,
"c"=>600
);
$after =
array("a"=>100,
"b"=>100,
"c"=>100
);
我想得到这样的结果:
$now =
array(
"a"=>300,//400-100
"b"=>400,//500-100
"c"=>500 //600-100
);
编辑:
$ after的一些元素可能会丢失
示例:
$after =
array("a"=>100,
"c"=>100
);
答案 0 :(得分:3)
$now = array();
foreach ( $before as $k => $v ) {
$a = empty($after[$k]) ? 0 : $after[$k];
$now[$k] = $v - $a;
}
答案 1 :(得分:2)
您可以使用array_map:
$before = array(
"a"=>400,
"b"=>500,
"c"=>600
);
$after = array(
"a"=>100,
"b"=>100,
"c"=>100
);
function dif($a, $b) {
return $a - $b;
}
$res = array_map("dif", $before, $after);
print_r($res);
<强>输出:强>
Array
(
[0] => 300
[1] => 400
[2] => 500
)
答案 2 :(得分:1)
foreach ($before as $key=>$value) {
$now[$key] = $value-$after[$key]
}
如果两个数组中的元素完全相同,则此选项有效。
答案 3 :(得分:1)
function subtract_arrays($a, $b){
if(count($a) != count($b)){
return false;
}
$c = array();
foreach($a as $k=>$v){
$c[$k] = $a[$k]-$b[$k];
}
return $c;
}
$now = subtract_arrays($before, $after);