class DiffArray in Drupal 10
Same name and namespace in other branches
- 8 core/lib/Drupal/Component/Utility/DiffArray.php \Drupal\Component\Utility\DiffArray
- 9 core/lib/Drupal/Component/Utility/DiffArray.php \Drupal\Component\Utility\DiffArray
Provides helpers to perform diffs on multi dimensional arrays.
Hierarchy
- class \Drupal\Component\Utility\DiffArray
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\UtilityView 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;
}
}