微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP – 多维数组diff

我想请求你的帮助,因为我很难解决这个问题.我创建了一个方便数组差异的功能,但它不足以满足我的需求.谢谢,更多的力量!

<?PHP
   $arraySession = array(
      'sampleA' => array('1', '2', '3'),
      'sampleB' => array('1', '2', '3'),
   );

$arrayPost = array(
    'sampleA' => array('1'),
    'sampleB' => array('1','2'),
);

结果应该是:

array(
   'sampleA' => array('2', '3')
   'sampleB' => array('3'),
)

我现有的职能:

    public function array_diff_multidimensional($session, $post) { 
      $result = array();
      foreach($session as $sKey => $sValue){
          foreach($post as $pKey => $pValue) {
              if((string) $sKey == (string) $pKey) {
                  $result[$sKey] = array_diff($sValue, $pValue);
              } else {
                  $result[$sKey] = $sValue;
              }
          }
      }
      return $result;
    }

任何帮助将非常感激!快乐的编码!

解决方法:

不是我的功能而且没有经过我的测试,但这是PHP.net/array_diff的第一个评论之一(信用卡转到gmail dot com的thefrox)

<?PHP
function multidimensional_array_diff($a1, $a2) {
    $r = array();

    foreach ($a2 as $key => $second) {
        foreach ($a1 as $key => $first) {
          if (isset($a2[$key])) {
              foreach ($first as $first_value) {
                  foreach ($second as $second_value) {
                      if ($first_value == $second_value) {
                          $true = true;
                          break;
                      }
                  }
                  if (!isset($true)) {
                      $r[$key][] = $first_value;
                  }
                  unset($true);
              }
          } else {
              $r[$key] = $first;
          }
        }
    }
    return $r;
}
?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐