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;}