public static function merge()
{
$args = func_get_args();
- $res = array();
+ $res = [];
foreach ($args as $arg) {
if (!is_array($arg)) {
- $arg = array($arg);
+ $arg = [$arg];
}
$res = array_merge($res, $arg);
}
return $res;
}
+ public static function mergeOverwriteNull()
+ {
+ $args = func_get_args();
+ foreach ($args as $k => $arg) {
+ self::cleanNullValues($arg);
+ $args[$k] = $arg;
+ }
+ return call_user_func_array('self::merge', $args);
+ }
+
+ public static function cleanNullValues(&$arr)
+ {
+ foreach ($arr as $k => $v) {
+ if (is_array($v)) {
+ self::cleanNullValues($v);
+ if (!count($v)) {
+ unset($arr[$k]);
+ } else {
+ $arr[$k] = $v;
+ }
+ } else if (null === $v) {
+ unset($arr[$k]);
+ }
+ }
+ }
+
/**
* @param $str
* @return int[]