- //Pass through non hashed or empty array
- if ($depth && is_array($array) && ($array === [] || array_keys($array) === range(0, count($array) - 1))) {
- $res[$path] = $array;
- //Flatten hashed array
- } elseif ($depth && is_array($array)) {
+ //Detect numerical only array
+ //count(array_filter($array, function($k) { return !is_numeric($k); }, ARRAY_FILTER_USE_KEY)) == 0
+ //array_reduce(array_keys($array), function($c, $k) { return $c += !is_numeric($k); }, 0)
+
+ //Flatten hashed array until depth reach zero
+ if ($depth && is_array($array) && $array !== [] && !in_array($path, $skip)) {