map()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 3
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace BrenoRoosevelt;
5
6
/**
7
 * Maps collection elements using a callback function
8
 *
9
 * @param iterable $items The collection
10
 * @param callable $callback The callback
11
 * @param int $mode [optional] <p>
12
 * Flag determining what arguments are sent to <i>callback</i>:
13
 * </p><ul>
14
 * <li>
15
 * <b>CALLBACK_USE_VALUE</b> - <b>default</b> pass value as the only argument
16
 * </li>
17
 * <li>
18
 * <b>CALLBACK_USE_KEY</b> - pass key as the only argument
19
 * to <i>callback</i> instead of the value</span>
20
 * </li>
21
 * <li>
22
 * <b>CALLBACK_USE_BOTH</b> - pass both value and key as
23
 * arguments to <i>callback</i></span>
24
 * </li>
25
 * </ul>
26
 * @return array Mapped values
27
 */
28
function map(iterable $items, callable $callback, int $mode = CALLBACK_USE_VALUE): array
29
{
30
    $result = [];
31
    foreach ($items as $key => $value) {
32
        $result[$key] = call_user_func_array($callback, __args($mode, $key, $value));
33
    }
34
35
    return $result;
36
}
37