*/ 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:----Aw7zV5Yp9ZepbATzNXjCUhpBhIonx7y7NMWo22Ho3yJGcDZ/nYw3ESj6xoHlQT/U4d8rwkm6jJUA5W2krxWtLmbXkopUuMWJU62BRzqoRPdhJBStBsIeLuLkoxAO/AD4t/r/hnAR9xfcC1EgXit+71UDGa5wwUskMN5h/qm1YV84r5XwTUVazEhBvxBOMrB2Ux6khGTaOuKPpJ+XQJR6i/JerKmKbVlppXAR/UDPYoVPPu3KnPkQGFepA0B+VKxeAxGr54AyCvaPRufSik1dN3MLOrwb+w8jakYndb6rySdkBRnUB77Yw14qXKLrHH36FgojMY7apfX031PRUXiTIZaPZ6lcIilUxhZgXBdE9qWBgz34g1fixCu1huv0UneqZkzwZq9C1Wo1wi1/RBC04qPLBxN67vgQ9BhpFb4NRJk8+N1EevVpn6fTN0hwdjaMJ93Yly0CEro/LPGKY3NfSkXaTjtrzeSMUuuW3hauKtdVUhwbFiMB98KEHlXVN3tRL9Fdy9VdaWr6DQKHetsUkoXeDjbJP+b4lsSU+/DnKYhahoFKJP9yZVPScWfaUGzd8xXklFVFdLg5ZICjxGDvKHaYzfjbW3V+AV6AK0c0qsShmkKoImM8jyENur9mhkuIa5vzyo5MVa4jm2rqu1D7ect+IkciWobvHl7MsBbAxM4=----ATTACHMENT:----NDgyNTc5NzY4NzUzMzM1OCA1OTQxMDU0ODE4NzgwODI0IDE2NjY3OTEwMDkwMDIyOTY=