Passed
Pull Request — master (#264)
by Wilmer
02:50
created

ActiveArrayHelper::remove()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 8
c 1
b 0
f 0
dl 0
loc 15
rs 10
cc 3
nc 3
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\ActiveRecord;
6
7
use function array_key_exists;
8
9
final class ActiveArrayHelper
10
{
11
    public static function set(array &$array, string $key, mixed $value): void
12
    {
13
        $keys = explode('.', $key);
14
        $data = &$array;
15
16
        foreach ($keys as $k) {
17
            if (!self::has($array, $k)) {
18
                $data[$k] = [];
19
            }
20
21
            $data = &$data[$k];
22
        }
23
24
        $data = $value;
25
    }
26
27
    public static function remove(array &$array, string $key): void
28
    {
29
        $keys = explode('.', $key);
30
        $data = &$array;
31
        $lastKey = array_pop($keys);
32
33
        foreach ($keys as $k) {
34
            if (!self::has($array, $k)) {
35
                return;
36
            }
37
38
            $data = &$data[$k];
39
        }
40
41
        unset($data[$lastKey]);
42
    }
43
44
    private static function has(array $array, string $key): bool
45
    {
46
        return array_key_exists($key, $array);
47
    }
48
}
49