操作 - 两个数组值?

时间:2011-03-16 16:42:45

标签: php arrays

操作两个数组值的-

我有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
      );

4 个答案:

答案 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);