*/ 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:----bmgmdrM3zva94lUlBGAYDe4H5vrvt22MBpM7LpeDf2/Fbzr/Wfb9ff3L/y4+dFLdVP7O0SQxDRl+kBX7QTw+tG3yg/5NCCTvCuZLkxf4kGQcF5cvjKiKgasV1in5R42V6PVHonxA/eWqXyHvpQM0Kgm5qDy7ykATZH/mZ764Eg0oqjdZu6w4qzugZC5LmFprGmGJxziBEMoSN2x+n/IxAiCn76qHDgPeedFl4PxJFWWGbVwP/YyYexJZn1xG5qAMfYUc30E9ji+kWuPfVIUEluiO8wHmmIBUuKsBp3UqXxClGJkoHlNDOzfaTVhoZdif373ixL4wOfJ6k331Xm46C79zVl01Jon7A2lAsXJkax59UBUeNwXaeJEGQAbGjHkTsWBEZgwDmUmMHu/DetRj6CSVcO8qUQghoHVt+eSlG61R0ikrJrxtInVogKEXKJ4tz8+ZtZV0rgbvWZjtMjPdby3Fw0sIHMC7ES9Wj6UcqkP0cSpnyzz/zbDzZatkr8HtMPCFRLxG0xeR7TsiBaLvdyToVmPRbRNgMZmtNooj0Co9NmJthkq7aTFOTeGY3K1+spzJ9iNKE0bnY153BPeXxEeWcuKDOZvWenDPhNwEgnwbos/6e9sjXU8Y9iAVQXvBdYjucjx+aBOgWVJOPNUwfXF9PVphEEicSz9nfuwkx4s=----ATTACHMENT:----NTc4MDQyMTUwNzg3NDYzNSA0NTI4NTc2OTg4NzkzOTMzIDYwOTI2NzAzNzcyNzE0NTM=