public function recursiveDiff(array $array1, array $array2)
    {
        $diff = [];

        // Compare array1
        foreach ($array1 as $key => $value) {
            if (!array_key_exists($key, $array2)) {
                $diff[0][$key] = $value;
            } elseif (is_array($value)) {
                if (!is_array($array2[$key])) {
                    $diff[0][$key] = $value;
                    $diff[1][$key] = $array2[$key];
                } else {
                    $new = $this->recursiveDiff($value, $array2[$key]);
                    if ($new !== false) {
                        if (isset($new[0])) {
                            $diff[0][$key] = $new[0];
                        }
                        if (isset($new[1])) {
                            $diff[1][$key] = $new[1];
                        }
                    }
                }
            } elseif ($array2[$key] !== $value) {
                $diff[0][$key] = $value;
                $diff[1][$key] = $array2[$key];
            }
        }

        // Compare array2
        foreach ($array2 as $key => $value) {
            if (!array_key_exists($key, $array1)) {
                $diff[1][$key] = $value;
            }
        }

        return $diff;
    }
public function recursiveDiff(array $array1, array $array2)
    {
        $diff = [];

        // Compare array1
        foreach ($array1 as $key => $value) {
            if (!array_key_exists($key, $array2)) {
                $diff[0][$key] = $value;
            } elseif (is_array($value)) {
                if (!is_array($array2[$key])) {
                    $diff[0][$key] = $value;
                    $diff[1][$key] = $array2[$key];
                } else {
                    $new = $this->recursiveDiff($value, $array2[$key]);
                    if ($new !== false) {
                        if (isset($new[0])) {
                            $diff[0][$key] = $new[0];
                        }
                        if (isset($new[1])) {
                            $diff[1][$key] = $new[1];
                        }
                    }
                }
            } elseif ($array2[$key] !== $value) {
                $diff[0][$key] = $value;
                $diff[1][$key] = $array2[$key];
            }
        }

        // Compare array2
        foreach ($array2 as $key => $value) {
            if (!array_key_exists($key, $array1)) {
                $diff[1][$key] = $value;
            }
        }

        return $diff;
    }
public function recursiveDiff ( array $ array1 , array $ array2 ) { $ diff = [ ] ; // Compare array1 foreach ( $ array1 as $ key => $ value ) { if ( ! array_key_exists ( $ key , $ array2 ) ) { $ diff [ 0 ] [ $ key ] = $ value ; } elseif ( is_array ( $ value ) ) { if ( ! is_array ( $ array2 [ $ key ] ) ) { $ diff [ 0 ] [ $ key ] = $ value ; $ diff [ 1 ] [ $ key ] = $ array2 [ $ key ] ; } else { $ new = $ this -> recursiveDiff ( $ value , $ array2 [ $ key ] ) ; if ( $ new !== false ) { if ( isset ( $ new [ 0 ] ) ) { $ diff [ 0 ] [ $ key ] = $ new [ 0 ] ; } if ( isset ( $ new [ 1 ] ) ) { $ diff [ 1 ] [ $ key ] = $ new [ 1 ] ; } } } } elseif ( $ array2 [ $ key ] !== $ value ) { $ diff [ 0 ] [ $ key ] = $ value ; $ diff [ 1 ] [ $ key ] = $ array2 [ $ key ] ; } } // Compare array2 foreach ( $ array2 as $ key => $ value ) { if ( ! array_key_exists ( $ key , $ array1 ) ) { $ diff [ 1 ] [ $ key ] = $ value ; } } return $ diff ; }
Recursive arrayDiff.

@param array $array1 First array.
@param array $array2 Second Array.
@return array The array diff.
Recursive arrayDiff .