Mercurial > hg > isophonics-drupal-site
view core/lib/Drupal/Component/Utility/DiffArray.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 4c8ae668cc8c |
children |
line wrap: on
line source
<?php namespace Drupal\Component\Utility; /** * Provides helpers to perform diffs on multi dimensional arrays. * * @ingroup utility */ 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; } }