Php 比较关联数组-返回不匹配的值

Php 比较关联数组-返回不匹配的值,php,arrays,associative-array,array-intersect,Php,Arrays,Associative Array,Array Intersect,我有两个关联数组,如下所示 Array ( [Turbine] => 0 [Nuts and Bolts] => 6 [Runner Blade] => 5 ) Array ( [Nuts and Bolts] => 10 [Runner Blade] => 5 [Turbine] => 1 ) 我要做的是比较这两个数组,并返回具有相同键但值不同的数组。类似于array\u intersect\u assoc,

我有两个关联数组,如下所示

Array
(
    [Turbine] => 0
    [Nuts and Bolts] => 6
    [Runner Blade] => 5
)
Array
(
    [Nuts and Bolts] => 10
    [Runner Blade] => 5
    [Turbine] => 1
)
我要做的是比较这两个数组,并返回具有相同键但值不同的数组。类似于
array\u intersect\u assoc
,但它返回所有匹配的值,这不是我想要的。使用上述示例,我想要返回的是两个值之间的差值,类似于:

Array
(
    [Nuts and Bolts] => 4
    [Turbine] => 1
)

这将满足您的要求:

array_intersect_key($array1, $array2)

这将满足您的要求:

array_intersect_key($array1, $array2)

这将满足您的要求:

array_intersect_key($array1, $array2)

这将满足您的要求:

array_intersect_key($array1, $array2)
大概是这样的:

$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
}
大概是这样的:

$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
}
大概是这样的:

$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
}
大概是这样的:

$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
}
试试这个

$newArr = array();
foreach($arr1 as $k=>$v){
    $dif = abs($arr1[$k] - $arr2[$k]);
    if($dif) $newArr[$k] = $dif;
}
print '<pre>';
print_r($newArr);
$newArr=array();
foreach($arr1为$k=>$v){
$dif=abs($arr1[$k]-$arr2[$k]);
如果($dif)$newArr[$k]=$dif;
}
打印“”;
印刷费($newArr);
试试这个

$newArr = array();
foreach($arr1 as $k=>$v){
    $dif = abs($arr1[$k] - $arr2[$k]);
    if($dif) $newArr[$k] = $dif;
}
print '<pre>';
print_r($newArr);
$newArr=array();
foreach($arr1为$k=>$v){
$dif=abs($arr1[$k]-$arr2[$k]);
如果($dif)$newArr[$k]=$dif;
}
打印“”;
印刷费($newArr);
试试这个

$newArr = array();
foreach($arr1 as $k=>$v){
    $dif = abs($arr1[$k] - $arr2[$k]);
    if($dif) $newArr[$k] = $dif;
}
print '<pre>';
print_r($newArr);
$newArr=array();
foreach($arr1为$k=>$v){
$dif=abs($arr1[$k]-$arr2[$k]);
如果($dif)$newArr[$k]=$dif;
}
打印“”;
印刷费($newArr);
试试这个

$newArr = array();
foreach($arr1 as $k=>$v){
    $dif = abs($arr1[$k] - $arr2[$k]);
    if($dif) $newArr[$k] = $dif;
}
print '<pre>';
print_r($newArr);
$newArr=array();
foreach($arr1为$k=>$v){
$dif=abs($arr1[$k]-$arr2[$k]);
如果($dif)$newArr[$k]=$dif;
}
打印“”;
印刷费($newArr);


那么问题出在哪里?你试过什么吗?有什么问题吗?你试过什么吗?有什么问题吗?你试过什么吗?有什么问题吗?您尝试过什么吗?这不会测试值是否不同,也不会减去两个数组中的值。这只是返回第一个数组中存在于另一个数组中的值,而不是差异。这不会测试值是否不同,它不会减去两个数组中的值。这只是返回第一个数组中存在于另一个数组中的值,而不是差异。这不会测试值是否不同,也不会减去两个数组中的值。这只是返回第一个数组中存在于另一个数组中的值,不是差异这不会测试值是否不同,也不会减去两个数组中的值。这只是返回另一个数组中存在的第一个数组中的值,没有区别如何更改它以将结果保存到新数组而不是修改现有数组?如何更改它以将结果保存到新数组而不是修改现有数组?如何更改它以将结果保存到新数组而不是修改现有数组?如何更改它以保存新数组将结果放入一个新数组中,而不是修改现有的数组?这是可行的,但是我在
$dif=abs($linequants[$k]-$costquants[$k])行上得到一个未定义的索引错误
if(isset($linequants[$k],$costquants[$k])){$dif=abs($linequants[$k]-$costquants[$k]);if($dif)$newArr[$k]=$dif;}
这是可行的,但是我在行上得到了一个未定义的索引错误
$dif=abs($linequants[$k]-$costquants[$k])
if(isset($linequants[$k],$costquants[$k])){$dif=abs($linequants[$k]-$costquants[$k]);if($dif)$newArr[$k]=$dif;}
这是可行的,但是我在行上得到了一个未定义的索引错误
$dif=abs($linequants[$k]-$costquants[$k])
if(isset($linequants[$k],$costquants[$k])){$dif=abs($linequants[$k]-$costquants[$k]);if($dif)$newArr[$k]=$dif;}
这是可行的,但是我在行上得到了一个未定义的索引错误
$dif=abs($linequants[$k]-$costquants[$k])
if(isset($linequants[$k],$costquants[$k]){$dif=abs($linequants[$k]-$costquants[$k]);if($dif)$newArr[$k]=$dif;}