Completed
Push — master ( b03e32...44190a )
by Sérgio
03:19
created

flatten.php ➔ Sergiors\Functional\flatten()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 18
Code Lines 9

Duplication

Lines 18
Ratio 100 %

Code Coverage

Tests 8
CRAP Score 2
Metric Value
cc 2
eloc 9
nc 1
nop 0
dl 18
loc 18
ccs 8
cts 8
cp 1
crap 2
rs 9.4285
1
<?php
2
3
namespace Sergiors\Functional;
4
5
/**
6
 * @author Sérgio Rafael Siqueira <[email protected]>
7
 *
8
 * @return mixed
9
 */
10 View Code Duplication
function flatten()
11
{
12 1
    $args = func_get_args();
13
14
    $flatten = function (array $ls) {
15
        return array_reduce($ls, function ($carry, $curr) {
16 1
            if (is_array($curr)) {
17 1
                return array_merge($carry, flatten($curr));
18
            }
19
20 1
            $carry[] = $curr;
21
22 1
            return $carry;
23 1
        }, []);
24 1
    };
25
26 1
    return call_user_func_array(curry($flatten), $args);
27
}
28