public static diffAssocRecursive ( $array1, $array2 ) : array | ||
$array1 | ||
$array2 | ||
return | array |
public static function diffAssocRecursive($array1, $array2)
{
$difference = array();
foreach ($array1 as $key => $value) {
if (is_array($value)) {
if (!isset($array2[$key]) || !is_array($array2[$key])) {
$difference[$key] = $value;
} else {
$new_diff = self::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;
}
/** * @param ConfigYaml $a * @param ConfigYaml $b * @return array */ public static function compare(ConfigYaml $a, ConfigYaml $b) { $a_data = $a->getData(); $b_data = $b->getData(); return ArrayUtil::diffAssocRecursive($a_data, $b_data); }