• 前几天在群里看到友友再问多维数组比较差异,所以把之前总结的方法贴出来以供参考,希望可以帮助大家。

    <?php
     * 数据比较返回差集
     * @param $array1
     * @param $array2
     * @return array
     */
    public static function category_array_diff($array1, $array2) {
      $arr  = $arr2 = $result = array();
      foreach ($array1 as $index => $item) {
          $arr[] = serialize($item);
      }
      foreach ($array2 as $index => $item) {
          $arr2[] = serialize($item);
      }
      foreach (array_diff($arr,$arr2) as $index => $item) {
          $result[] = unserialize($item);
      }
      return $result;
    }
    
    //另一种算法
     function array_diff_assoc2_deep($array1, $array2) {
          $ret = array();
          foreach ($array1 as $k => $v) {
              if (!isset($array2[$k])) $ret[$k] = $v;
              else if (is_array($v) &amp;&amp; is_array($array2[$k])) $ret[$k] = array_diff_assoc2_deep($v, $array2[$k]);
              else if ($v !=$array2[$k]) $ret[$k] = $v;
              else
              {
                  unset($array1[$k]);
              }
    
          }
          return $ret;
      }
    
    print_r(array_diff_assoc2_deep($a1, $a2));
Last modification:February 28, 2022
如果觉得我的文章对你有用,请随意赞赏