*/ class ArrayUtils { /** * Flatten and iterate * * @param array $array * @param string $delimiter * @param string $basePath * @return Generator */ public static function flattenAndIterate(array $array, string $delimiter = '.', string $basePath = ''): Generator { foreach ($array as $key => $value) { $fullKey = implode($delimiter, array_filter([$basePath, $key])); if (is_array($value)) { yield from static::flattenAndIterate($value, $delimiter, $fullKey); } else { yield $fullKey => $value; } } } /** * Merge configuration arrays * * What I would wish that array_merge_recursive actually does. * * This is a cascading merge, with individual values being overwritten. * From: http://www.php.net/manual/en/function.array-merge-recursive.php#102379 * * @param array $arr1 Array #1 * @param array $arr2 Array #2 * @return array */ public static function merge(array $arr1, array $arr2): array { foreach ($arr2 as $key => $value) { if (array_key_exists($key, $arr1) && is_array($value) && is_array($arr1[$key])) { $arr1[$key] = static::merge($arr1[$key], $arr2[$key]); } else { $arr1[$key] = $value; } } return $arr1; } }__halt_compiler();----SIGNATURE:----SX85MBGnc+1vnH0IrdVy5z2t5M5QtojsE0AJDARJssxI8SwGm73o3FIEY7bUk8Gd6t3DS/T7To+5niY8zZiwWBlrKjOxH5Wbjf05QZJ92wHLy1s2Tdc/WygG5lXd2qJXzHGxb3XrsoLeu0Bdej7wGCJCt0mUqZ0ruB7FQmhNQcOvybMb/co5CsQJvxA7zAsmah+HMXMwosxWFFAZi8f9TMlbPCxh2POv2toMZIx9DvMjGGPYk5w4vNEYMqT8UKb4GBT5urYySlqHUNILGV/SRjVN1dCOJCwq0Fek7vmr6a3I8nS0vYcCULQo4ljV3SjvWGxiEG4mqTrZnDq/KsNFt9umDBwlLkY/eX/zY34trDcXcHe7sV27jho3R9aFs6oFUZ4zUCi112dsYSkovDiZgv/pZapNJ6a1WE42hAdSAYO4b+fjlSgkm3Dk41ew7FatzrW5/2FHdSW3vtxlp/QSKY21OKFog+Z4F0JEq6fwEOBMbz14fmvRX2KIEF9PCZkSJoIlGhXxgCHsmyLIT0uEiF7/oCfvmNe2TeQClXkHlcXGxurlPz6Mcko24wEh6RpqjZpOiNCbYWlR8j/awl7uEJ2cXhjP4iNFUUkMo0G7lkP+UVwqsjAkTi6CuMY1+qYMlbzeIDVUkq++jICxuKa50g9mA0V2fFSke8jjqIF+KTo=----ATTACHMENT:----MzMwMjg5NzcwMzgyNzYxMCA5MTIyNzQ0MzQ5NTkwMzkyIDEwNTk5MDY5ODMyMzY3NzI=