Inspectors   A
last analyzed

Complexity

Total Complexity 13

Size/Duplication

Total Lines 88
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 13
lcom 1
cbo 0
dl 0
loc 88
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A hasAllKeys() 0 4 1
A hasAllValues() 0 4 2
A hasAllValuesMultiDimensional() 0 12 3
A hasOnlyKeys() 0 4 1
A haveSameKeys() 0 4 3
A haveSameValues() 0 4 3
1
<?php
2
3
namespace SimpleArrayLibrary\Categories;
4
5
trait Inspectors
6
{
7
    /**
8
     * Checks if $array's keys contain all of $subArray's values
9
     *
10
     * @param array $haystack
11
     * @param array $needles
12
     *
13
     * @return bool
14
     */
15
    public static function hasAllKeys(array $haystack, array $needles)
16
    {
17
        return self::hasAllValues(array_keys($haystack), $needles);
18
    }
19
20
    /**
21
     * Checks if $array's keys contain all of $subArray's values
22
     *
23
     * @param array $haystack
24
     * @param array $needles
25
     *
26
     * @return bool
27
     */
28
    public static function hasAllValues(array $haystack, array $needles)
29
    {
30
        return array_diff($needles, $haystack) ? false : true;
31
    }
32
33
    /**
34
     * Checks if $array's keys contain all of $subArray's values
35
     *
36
     * @param array $haystack
37
     * @param array $needles
38
     *
39
     * @return bool
40
     */
41
    public static function hasAllValuesMultiDimensional(array $haystack, array $needles)
42
    {
43
        $return = true;
44
        foreach ($needles as $needle) {
45
            if (!in_array($needle, $haystack)) {
46
                $return = false;
47
                break;
48
            }
49
        }
50
51
        return $return;
52
    }
53
54
    /**
55
     * Checks whether array has only provided keys as indexes
56
     *
57
     * @param array $haystack
58
     * @param array $needles
59
     *
60
     * @return bool
61
     */
62
    public static function hasOnlyKeys(array $haystack, array $needles)
63
    {
64
        return self::haveSameKeys($haystack, array_flip($needles));
65
    }
66
67
    /**
68
     * Checks if two arrays have all equal keys
69
     *
70
     * @param array $array1
71
     * @param array $array2
72
     *
73
     * @return boolean
74
     */
75
    public static function haveSameKeys(array $array1, array $array2)
76
    {
77
        return self::hasAllKeys($array1, array_keys($array2)) && self::hasAllKeys($array2, array_keys($array1)) ? true : false;
78
    }
79
80
    /**
81
     * Check if two arrays have all equal values
82
     *
83
     * @param array $array1
84
     * @param array $array2
85
     *
86
     * @return bool
87
     */
88
    public static function haveSameValues($array1, $array2)
89
    {
90
        return self::hasAllValues($array1, $array2) && self::hasAllValues($array2, $array1) ? true : false;
91
    }
92
}