我可以确定PHP数组值增量吗?

时间:2012-05-23 16:47:20

标签: php

我有两个多维数组,我需要确定每个值的增量。我知道array_diff函数只返回键的差异。假设两个数组包含相同的键集,是否存在确定每组值的增量的功能?

示例:

array_1(test1 => Array([key1] => 100, [key2] => 200 ) )

array_2(test1 => Array([key1] => 105, [key2] => 195 ) )

我希望有类似的东西:

array_3(test1 => Array([key1] => 5, [key2] => -5 ) ) 

有没有PHP方法可以做到这一点,还是我自己?

3 个答案:

答案 0 :(得分:3)

这里的答案建议使用foreach循环,但我认为创建匿名函数会更容易:

<?php
    $count_delta = create_function('$a,$b', 'return $a - $b;');

    $arr1 = array(100, 200);
    $arr2 = array(20, 180);

    $delta = array_map($count_delta, $arr1, $arr2);

    var_dump($delta);

输出将是:

array
  0 => int 80
  1 => int 20

答案 1 :(得分:1)

$delta = array();

foreach( $array1 as $k=>$v )
{
  if( array_key_exists( $k, $array2 )
  {
    // preserve the key
    $delta[$k] = $array1[$k] - $array2[$k];

    // or don't
    $delta[] = $array1[$k] - $array2[$k];
  }
}

print_r($delta);

答案 2 :(得分:0)

没有内置功能,但你可以使用它。

function delta_array($a, $b) {
    if (sizeof($a) != sizeof($b))
        return false;

    $arr = array();
    for ($i=0; $i < $c = sizeof($a); $i++)
        $arr[] = $b[$i] - $a[$i];

    return $arr;
}

$arr1 = array(100,200);
$arr2 = array(105,195);

$delta = delta_array($arr1, $arr2);

print_r($delta);

以上将返回

Array
(
    [0] => -5
    [1] => 5
)