clean_ids()   B
last analyzed

Complexity

Conditions 8
Paths 9

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 72

Importance

Changes 0
Metric Value
cc 8
eloc 9
c 0
b 0
f 0
nc 9
nop 3
dl 0
loc 15
ccs 0
cts 9
cp 0
crap 72
rs 8.4444
1
<?php
2
if (! function_exists('is_even')) {
3
    /**
4
     * Четное ли число хранится внутри переменной
5
     *
6
     * @param int $n проверяемая ли переменная
7
     * @return bool
8
     */
9
    function is_even($n)
10
    {
11
        return (is_numeric($n) && ($n % 2 == 0));
12
    }
13
}
14
15
if (! function_exists('plus_minus')) {
16
    /**
17
     * Подстановка +/- перед значением переменной
18
     *
19
     * @param mixed $num обрабатываемая переменная
20
     * @param string $plus префикс положительного значения
21
     * @param string $minus префикс отрицательного значения
22
     * @return string
23
     */
24
    function plus_minus($num, $plus = '+', $minus = '-')
25
    {
26
        if (! is_scalar($num)) {
27
            $num = 0;
28
        }
29
        if ($num < 0) {
30
            $out = $minus . abs($num);
31
        } elseif ($num > 0) {
32
            $out = $plus . abs($num);
33
        } else {
34
            $out = 0;
35
        }
36
37
        return $out;
38
    }
39
}
40
41
if (! function_exists('strip_non_numeric')) {
42
    /**
43
     * Удаление из переменной всех не числовых символов
44
     *
45
     * @param mixed $string обрабатываемая переменная
46
     * @return null|int
47
     */
48
    function strip_non_numeric($string)
49
    {
50
        return is_scalar($string) ? (int)preg_replace('/[^0-9]+/', '', $string) : null;
51
    }
52
}
53
54
if (! function_exists('clean_ids')) {
55
    /**
56
     * Удаление из массива значений меньше нуля, а так же значений из массива запрещенных значений
57
     *
58
     * @param mixed $IDs обрабатываемые значения
59
     * @param string $sep если $IDs является строкой, то $sep выступает в роли разделителя значений
60
     * @param array $ignore массив запрещенных значений
61
     * @return array
62
     */
63
    function clean_ids($IDs, $sep = ',', $ignore = [])
64
    {
65
        $out = [];
66
        if (! is_array($IDs)) {
67
            $IDs = is_scalar($IDs) ? explode($sep, $IDs) : [];
68
        }
69
        foreach ($IDs as $item) {
70
            $item = trim($item);
71
            if ((is_scalar($item) && (int)$item >= 0) && (empty($ignore) || ! in_array((int)$item, $ignore, true))) {
72
                $out[] = (int)$item;
73
            }
74
        }
75
        $out = array_unique($out);
76
77
        return $out;
78
    }
79
}
80
81
if (! function_exists('is_number')) {
82
    /**
83
     * Является ли переменная истинным числом
84
     *
85
     * @param mixed $var проверяемая переменная
86
     * @return bool
87
     */
88
    function is_number($var)
89
    {
90
        return (is_numeric($var) && ! is_string($var));
91
    }
92
}
93