class DiffArray

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Component/Utility/DiffArray.php \Drupal\Component\Utility\DiffArray
  2. 8.9.x core/lib/Drupal/Component/Utility/DiffArray.php \Drupal\Component\Utility\DiffArray
  3. 10 core/lib/Drupal/Component/Utility/DiffArray.php \Drupal\Component\Utility\DiffArray

Provides helpers to perform diffs on multi dimensional arrays.

Hierarchy

Expanded class hierarchy of DiffArray

Related topics

3 files declare their use of DiffArray
DiffArrayTest.php in core/tests/Drupal/Tests/Core/Common/DiffArrayTest.php
HTMLRestrictions.php in core/modules/ckeditor5/src/HTMLRestrictions.php
Link.php in core/modules/jsonapi/src/JsonApiResource/Link.php

File

core/lib/Drupal/Component/Utility/DiffArray.php, line 10

Namespace

Drupal\Component\Utility
View source
class DiffArray {
    
    /**
     * Recursively computes the difference of arrays with additional index check.
     *
     * This is a version of array_diff_assoc() that supports multidimensional
     * arrays.
     *
     * @param array $array1
     *   The array to compare from.
     * @param array $array2
     *   The array to compare to.
     *
     * @return array
     *   Returns an array containing all the values from array1 that are not present
     *   in array2.
     */
    public static function diffAssocRecursive(array $array1, array $array2) {
        $difference = [];
        foreach ($array1 as $key => $value) {
            if (is_array($value)) {
                if (!array_key_exists($key, $array2) || !is_array($array2[$key])) {
                    $difference[$key] = $value;
                }
                else {
                    $new_diff = static::diffAssocRecursive($value, $array2[$key]);
                    if (!empty($new_diff)) {
                        $difference[$key] = $new_diff;
                    }
                }
            }
            elseif (!array_key_exists($key, $array2) || $array2[$key] !== $value) {
                $difference[$key] = $value;
            }
        }
        return $difference;
    }

}

Members

Title Sort descending Modifiers Object type Summary
DiffArray::diffAssocRecursive public static function Recursively computes the difference of arrays with additional index check.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.