*/ 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:----RutoYxIKnRHz8xMB93BQ8PsdEJB7jQ2/b8l2sckqPN+xExAldmrk5a3qDVz+uoC0NDxmcwZxnulcsGCS0TAEwi0/BPYNbH8sfNiYSF+I1Hp9CxOhbBLmDRJ241O4xyKgJnuXszTuHFqVgmn17QIf57jytKWCeG7jXhnU0c09/njV/WZtuPGh7EG+vYvHTohT1XpMHwdePm56lyS8R8CmPe3WjIuLtQQ3sK8J2ZDaqw8T9J5+t1E70+W92KbdQSipSlXxGSlIaZ/SWQf0el54JjSbR9HqvQt08//NyGcyOF2+vHMNPooVFZj87a0AmXyiptpKrXBXeXL83aIyCwgv+rCdY4Jg5zrw3uJGwFmwpnnDQ0U+jB3SJERodUikKGLfklj034AGWuZE+JNZxpo/tnc0qHUDA6nzRFAMNdMhjXNCsyoVHJcKlvwrZC4ax2nWA0sw6qg+uY2XGOQkzllNcS/Q7WSqjEQ8wk6ngiBYrP5U4FEdzdU8RIImJ21DOI4L6LwHgCTBdATbTV6LLdFstT7QAlkNxHjwO6VT2v9bXUaZVSCMch7SqB6A/PpfSxa+Jmi5NM8gWIw+ijPQGI4pQFZt2AN+wLoKJd5tgUqI7AycRPGdDRvvfjJy9i2TubY26Wm9Ty4VjRvI1iYJQf/WndkHToZa6tmCOBAZr+rQqF4=----ATTACHMENT:----MjA4OTI5NDU3MDYzNDMxNCAzNDY0NzcyMjk2MTU3MDY0IDk4MTkwNzM3ODAxNzQ2MDE=