0

以下のように、2 つの連想配列があります。

Array
(
    [Turbine] => 0
    [Nuts and Bolts] => 6
    [Runner Blade] => 5
)
Array
(
    [Nuts and Bolts] => 10
    [Runner Blade] => 5
    [Turbine] => 1
)

私がやりたいことは、2 つの配列を比較して、同じキーで異なる値を持つ配列を返すことです。に似て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 に答える
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 に答える