<!-- wp:heading {"level":4} -->
<h4>前几天在群里看到友友再问多维数组比较差异,所以把之前总结的方法贴出来以供参考,希望可以帮助大家。</h4>
<!-- /wp:heading -->

<!-- wp:code -->

  /**
 * 数据比较返回差集
 * @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));

<!-- /wp:code -->

关注友儿不迷路

Last modification:October 9th, 2019 at 10:03 am
如果觉得我的文章对你有用,请随意赞赏