我有两个多维数组,我需要确定每个值的增量。我知道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方法可以做到这一点,还是我自己?
答案 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
)