0

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

4 回答 4

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
}
于 2014-09-11T14:48:37.767 回答
1

尝试这个...

$newArr = array();
foreach($arr1 as $k=>$v){
    $dif = abs($arr1[$k] - $arr2[$k]);
    if($dif) $newArr[$k] = $dif;
}
print '<pre>';
print_r($newArr);
于 2014-09-11T14:50:11.413 回答
0

这将做你想要的:

array_intersect_key($array1, $array2)
于 2014-09-11T14:47:39.277 回答
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);
于 2014-09-11T14:56:08.040 回答