*/ 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:----oLT37Yn58K6myuqZu7lENGd6IhmYuTiERekWP29eck1TkUcRJD5Im6sdG1RDVX4qyJ1xoNEgNT5f0WMooTVAU0Mll9BV8m/MIoQ8rc3h2mAuDWH0QITxQB/WzYibXDU5O0jUnssuBR/6fs8NV6EQ57kxDBxLbhcOLnEXR7lZiFUcyGx45VzlPV5GkteENkHukWCH6FDA6mhs/1KiUxITbVk1bsrd0GNlKrVND9JtZYeUL9JdxCDdBfyWPGbi19wlYIJeERzNNj/qHkRUdSIP16B+9KO4l/onkCn4IFpRlGImEQfKdyimx9aO6QeICye7ww7Ok28w0mGqh2sKWf1okv9iLmXKaqtRtLglHNylXc7M4miyaUnNF0UGg5pro9qMiBF8l1uypJx8V8aIsvrl9j3AW24ChtFwSq1ylO3lW5nNL5s42RmLCE4D61wEjBZOA0Sago9y4EbPxyyk8g0TRkFeoUq/+Qm27TdpU2eSyzFPx6v/0tFkSdrLP9nZlWOTHEFaUOrokMbR2Q9JrqchtC5jBlh1Ah4MpEL8WJqMBoMAPOC54Bqyj0nEHlfhVisVMn6smaOcIRU+VdzcmPJvNKoX7S2fvsAdhnQq7aPQwaFLiWJ53W7CSbg509VCw3L9vEe4M0QY6Cmj+FroXEXy3lbz4uQHLuIl9qXdoAFvHLo=----ATTACHMENT:----NTg4Njc1NjM5NDkyNTMwIDE5OTMyNDg1MDgzMjQ5MiAyMTE2OTYzMTE4MTgzODc=