ArrayHelper::preserveBools()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
cc 2
eloc 1
nc 2
nop 1
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 6
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * SEOmatic plugin for Craft CMS 3.x
4
 *
5
 * A turnkey SEO implementation for Craft CMS that is comprehensive, powerful,
6
 * and flexible
7
 *
8
 * @link      https://nystudio107.com
9
 * @copyright Copyright (c) 2017 nystudio107
10
 */
11
12
namespace nystudio107\seomatic\helpers;
13
14
/**
15
 * @author    nystudio107
16
 * @package   Seomatic
17
 * @since     3.0.0
18
 */
19
class ArrayHelper extends \craft\helpers\ArrayHelper
20
{
21
    // Public Static Methods
22
    // =========================================================================
23
24
    /**
25
     * @param array    $array
26
     * @param callable $callback
27
     *
28
     * @return array
29
     */
30
    public static function arrayFilterRecursive(array $array, callable $callback): array
31
    {
32
        foreach ($array as $k => $v) {
33
            if (\is_array($v)) {
34
                $array[$k] = self::arrayFilterRecursive($v, $callback);
35
            } else {
36
                if ($callback($v, $k)) {
37
                    unset($array[$k]);
38
                }
39
            }
40
        }
41
42
        return $array;
43
    }
44
45
    /**
46
     * Used as a callback for array_filter to preserve any boolean values
47
     * that are in the array being filtered
48
     *
49
     * @param $value
50
     *
51
     * @return bool
52
     */
53
    public static function preserveBools($value): bool
54
    {
55
        return \is_bool($value) ? true : !empty($value);
56
    }
57
58
    /**
59
     * Used as a callback for array_filter to preserve any numeric values
60
     * that are in the array being filtered
61
     *
62
     * @param $value
63
     *
64
     * @return bool
65
     */
66
    public static function preserveNumerics($value): bool
67
    {
68
        return \is_numeric($value) ? true : !empty($value);
69
    }
70
71
    /**
72
     * @param $value
73
     * @param $key
74
     *
75
     * @return bool
76
     */
77
    public static function unsetEmptyChildren($value, $key): bool
78
    {
79
        if (\is_bool($value)) {
80
            return false;
81
        }
82
83
        return empty($value) ? true : false;
84
    }
85
86
    /**
87
     * @param $value
88
     * @param $key
89
     *
90
     * @return bool
91
     */
92
    public static function unsetNullChildren($value, $key): bool
93
    {
94
        return $value === null;
95
    }
96
}
97