【问题标题】:PHP Compare two multidimensional arrays by key and valuePHP 按键和值比较两个多维数组
【发布时间】:2016-01-13 14:15:23
【问题描述】:

我正忙于学习 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)

由此也计算出差值。

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

【问题讨论】:

  • 您的实际输出 (the difference is {code}) 看起来与您的预期输出 (for which is {code}) 相同??
  • 我还是不明白
  • 好的,我明白你在说什么,但你需要定义规则。如果第二个数组是:array (size=1) 'x15z' => int 11,那么预期的输出是什么,如果它是array (size=1) 'x15z' => int 13,怎么样? 1 and 1 或者 1 and -1?如果第二个数组包含一个字符串或一个对象而不是一个整数呢
  • @Tim 他想计算不匹配的数组元素的整数值之间的差异。但是他还没有定义应该如何计算这种差异
  • 我正在寻找两个数组在元素和键值方面的差异。也就是说,如果 x15z 或 x16z 则不会出现在结果差异数组中,但在这种情况下它们都存在,我希望比较这两个值并获得它们的差异,即数组 1 中的 x15z 是 1 和 x15z在数组 12 中,差异是 11。如果这有意义吗?让我知道,否则我会再次更新问题!

标签: php arrays multidimensional-array


【解决方案1】:
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 数组方法来实现这一点?只是出于兴趣?
  • 我不知道,但如果有的话,会在此处记录:php.net/manual/en/ref.array.php
猜你喜欢
  • 2020-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多