我有2个关联数组,如下所示。
Array
(
[Turbine] => 0
[Nuts and Bolts] => 6
[Runner Blade] => 5
)
Array
(
[Nuts and Bolts] => 10
[Runner Blade] => 5
[Turbine] => 1
)
我想要做的是比较两个数组并返回具有相同键但具有不同值的数组。与array_intersect_assoc
类似,但返回所有匹配的值,这不是我想要的。使用上面的例子我想要返回的是2个值之间的差异,如:
Array
(
[Nuts and Bolts] => 4
[Turbine] => 1
)
答案 0 :(得分:2)
这样的事情:
$ar1;
$ar2;
foreach ($ar1 as $k => $v) {
if (intval($ar2[$k]) != intval($v))
$ar1[$k] = abs($v - $ar2[$k]);
else
unset($ar1[$k]); // remove key with equal value
}
答案 1 :(得分:1)
试试这个......
$newArr = array();
foreach($arr1 as $k=>$v){
$dif = abs($arr1[$k] - $arr2[$k]);
if($dif) $newArr[$k] = $dif;
}
print '<pre>';
print_r($newArr);
答案 2 :(得分:0)
这将做你想要的:
array_intersect_key($array1, $array2)
答案 3 :(得分:0)
$diff = array_diff_assoc($arr1, $arr2);
$result = array();
foreach(array_keys($diff) as $key){
$result[$key] = abs($arr1[$key] - $arr2[$key]);
}
var_dump($result);