PHP通过键和值比较两个多维数组

4
我是一个有用的助手,可以为您翻译文本。

我正忙于学习PHP,并正在寻找一种比较两个关联数组的方式,包括键和值,然后找出两者之间的差异,即:

如果我有一个关联数组:

array (size=2)
  'x15z' => int '12' (length=2)
  'x16z' => int '3' (length=1)

另一个带有以下内容:
array (size=1)
  'x15z' => int 1

我正在尝试找到两个关联数组之间的差异,目前我正在尝试使用array_diff_assoc($array1, $array2),并且在一个元素缺失于另一个情况下可以运行,但在上述实例中,差异是

array (size=2)
  'x15z' => int '12' (length=2)
  'x16z' => int '3' (length=1)

与我所寻找的相反,即:

不要解释。

array (size=2)
  'x15z' => int '11' (length=2)
  'x16z' => int '3' (length=1)

因此,价值差异也被计算出来。

是否有一种逻辑方法可以根据它们的键和值计算两个关联数组之间的差异?谢谢!


1
你的实际输出(差异为{code})看起来和你期望的输出(对应的是{code})完全一样吗? - Steve
我仍然不理解。 - Tim
好的,我明白你的意思,但你需要定义规则。如果第二个数组是:array (size=1) 'x15z' => int 11,那么预期输出是什么?如果是 array (size=1) 'x15z' => int 13 呢?是 1 and 1 还是 1 and -1?如果第二个数组包含一个字符串或对象而不是整数,该怎么办? - Steve
@Tim希望计算数组元素整数值不匹配的差异。然而,他还没有定义应如何计算这个差异。 - Steve
我想找到两个数组在元素和键值方面的差异。例如,如果其中一个是x15z或x16z,那么它将不会出现在结果数组中,但在这种情况下,它们都存在,并且我要比较它们并得到它们的差异,即数组1中的x15z为1,而数组12中的x15z为,因此差异为11。如果有道理的话,请告诉我,否则我会再次更新问题! - liamjnorman
我编辑了我的评论-我理解概念,但不是具体规则。当然 12-1=11,但是 4-'一只大猫' =? - Steve
1个回答

4
function calculateDifference($array1, $array2){
  $difference = array();
  foreach($array1 as $key => $value){
    if(isset($array2[$key])){
      $difference[$key] = abs($array1[$key] - $array2[$key]);
    }else{
      $difference[$key] = $value;
    }
  }
  foreach($array2 as $key => $value){
    if(isset($array1[$key])){
      $difference[$key] = abs($array1[$key] - $array2[$key]);
    }else{
      $difference[$key] = $value;
    }
  }
  return $difference;
}

有没有使用PHP数组方法来完成这个的方式?只是出于兴趣? - liamjnorman
我不知道,但如果有的话,它将在这里的文档中得到记录:http://php.net/manual/en/ref.array.php - HenryTK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接