Ouzo\Utilities\Arrays::recursiveDiff PHP Метод

recursiveDiff() публичный статический Метод

Array ( [a] => Array ( [d] => e ) [0] => f )
public static recursiveDiff ( array $array1, array $array2 ) : array
$array1 array
$array2 array
Результат array
    public static function recursiveDiff($array1, $array2)
    {
        $result = array();
        foreach ($array1 as $key => $value) {
            if (array_key_exists($key, $array2)) {
                if (is_array($value)) {
                    $nestedDiff = self::recursiveDiff($value, $array2[$key]);
                    if (!empty($nestedDiff)) {
                        $result[$key] = $nestedDiff;
                    }
                } elseif ($value != $array2[$key]) {
                    $result[$key] = $value;
                }
            } else {
                $result[$key] = $value;
            }
        }
        return $result;
    }

Usage Example

Пример #1
0
 /**
  * @test
  */
 public function shouldReturnAdditionalValueInRecursiveDiff()
 {
     //given
     $array1 = array('a' => array('b' => 'c', 'd' => 'e'), 'f' => array('b' => 'c'), 'z');
     $array2 = array('a' => array('b' => 'c'));
     //when
     $recursiveDiff = Arrays::recursiveDiff($array1, $array2);
     //then
     $this->assertEquals(array('a' => array('d' => 'e'), 'f' => array('b' => 'c'), 'z'), $recursiveDiff);
 }