@@ 12-32 (lines=21) @@ | ||
9 | * |
|
10 | * @return array |
|
11 | */ |
|
12 | function dropwhile(/* ...$args */) |
|
13 | { |
|
14 | $args = func_get_args(); |
|
15 | ||
16 | $dropwhile = function (callable $condition, array $xss) { |
|
17 | if ([] === $xss) { |
|
18 | return []; |
|
19 | } |
|
20 | ||
21 | $head = head($xss); |
|
22 | $tail = tail($xss); |
|
23 | ||
24 | if ($condition($head)) { |
|
25 | return dropwhile($condition, $tail); |
|
26 | } |
|
27 | ||
28 | return $xss; |
|
29 | }; |
|
30 | ||
31 | return call_user_func_array(partial($dropwhile), $args); |
|
32 | } |
|
33 |
@@ 11-31 (lines=21) @@ | ||
8 | * |
|
9 | * @return array |
|
10 | */ |
|
11 | function takewhile(/* ...$args */) |
|
12 | { |
|
13 | $args = func_get_args(); |
|
14 | ||
15 | $takewhile = function (callable $condition, array $xss) { |
|
16 | if ([] === $xss) { |
|
17 | return []; |
|
18 | } |
|
19 | ||
20 | $head = head($xss); |
|
21 | $tail = tail($xss); |
|
22 | ||
23 | if ($condition($head)) { |
|
24 | return array_merge([$head], takewhile($condition, $tail)); |
|
25 | } |
|
26 | ||
27 | return []; |
|
28 | }; |
|
29 | ||
30 | return call_user_func_array(partial($takewhile), $args); |
|
31 | } |
|
32 |