GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

Arr::random()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
cc 1
eloc 2
c 2
b 1
f 0
nc 1
nop 1
dl 0
loc 5
rs 10
1
<?php
2
/**
3
 * Helper class that provides useful php functions.
4
 *
5
 * @author      Vettivel Satheez <[email protected]>
6
 *
7
 * @link        https://github.com/satheez
8
 *
9
 * @license     MIT
10
 */
11
12
namespace Sa\Helper;
13
14
class Arr
15
{
16
    /**
17
     * Add new element to the array.
18
     *
19
     * @param array       $arr
20
     * @param             $value
21
     * @param string|null $key
22
     *
23
     * @return array
24
     */
25
    public static function add(array $arr, string $key, $value)
26
    {
27
        if (!empty($key)) {
28
            $arr[$key] = $value;
29
        } else {
30
            $arr[] = $value;
31
        }
32
33
        return $arr;
34
    }
35
36
    /**
37
     * Add new element to the array.
38
     *
39
     * @param array       $arr
40
     * @param string|null $key
41
     * @param mixed|null  $default
42
     *
43
     * @return array
44
     */
45
    public static function getByKey(array $arr, string $key, $default = null)
46
    {
47
        return isset($arr[$key]) ? $arr[$key] : $default;
48
    }
49
50
    /**
51
     * Pick first item from the array.
52
     *
53
     * @param array      $arr
54
     * @param mixed|null $default
55
     *
56
     * @return mixed|null
57
     */
58
    public static function first(array $arr, $default = null)
59
    {
60
        $firstIndex = 0;
61
62
        return self::nthElement($arr, $firstIndex, $default);
63
    }
64
65
    /**
66
     * Pick last item from the array.
67
     *
68
     * @param array      $arr
69
     * @param mixed|null $default
70
     *
71
     * @return mixed|null
72
     */
73
    public static function last(array $arr, $default = null)
74
    {
75
        $lastIndex = count($arr) - 1;
76
77
        return self::nthElement($arr, $lastIndex, $default);
78
    }
79
80
    /**
81
     * Pick nth item from array.
82
     *
83
     * @param array      $arr
84
     * @param int        $index
85
     * @param mixed|null $default
86
     *
87
     * @return mixed|null
88
     */
89
    public static function nthElement(array $arr, int $index, $default = null)
90
    {
91
        $key = array_keys($arr)[$index];
92
93
        return (count($arr) > 0 && isset($arr[$key])) ? $arr[$key] : $default;
94
    }
95
96
    /**
97
     * Shuffle an array.
98
     *
99
     * @param array $arr
100
     *
101
     * @return void
102
     *
103
     * @see https://stackoverflow.com/questions/4102777/php-random-shuffle-array-maintaining-key-value
104
     */
105
    public static function shuffle(array &$arr): void
106
    {
107
        $keys = array_keys($arr);
108
        shuffle($keys);
109
        $random = [];
110
        foreach ($keys as $key) {
111
            $random[$key] = $arr[$key];
112
        }
113
        $arr = $random;
114
    }
115
116
    /**
117
     * Split array into given sizes.
118
     *
119
     * @param array $arr
120
     * @param int   $into
121
     *
122
     * @return array
123
     */
124
    public static function split(array $arr, int $into = 2): array
125
    {
126
        return array_chunk($arr, $into);
127
    }
128
129
    /**
130
     * Select array element randomly.
131
     *
132
     * @param array $arr
133
     *
134
     * @return mixed|null
135
     */
136
    public static function random(array $arr)
137
    {
138
        $randomIndex = rand(0, (count($arr) - 1));
139
140
        return self::nthElement($arr, $randomIndex);
141
    }
142
143
    /**
144
     * Compare two arrays.
145
     *
146
     * @param array $arr1
147
     * @param array $arr2
148
     *
149
     * @return bool
150
     */
151
    public static function compare(array $arr1, array $arr2): bool
152
    {
153
        return array_diff($arr1, $arr2) === array_diff($arr2, $arr1);
154
    }
155
156
    /**
157
     * Get array common values.
158
     *
159
     * @param array $arr1
160
     * @param array $arr2
161
     *
162
     * @return array
163
     */
164
    public static function common(array $arr1, array $arr2)
165
    {
166
        return array_intersect($arr1, $arr2);
167
    }
168
169
    /**
170
     * Get array difference.
171
     *
172
     * @param array $arr1
173
     * @param array $arr2
174
     *
175
     * @return array
176
     */
177
    public static function difference(array $arr1, array $arr2)
178
    {
179
        return array_diff($arr1, $arr2);
180
    }
181
182
    /**
183
     * Merge array.
184
     *
185
     * @param array $arr1
186
     * @param array $arr2
187
     *
188
     * @return array
189
     */
190
    public static function merge(array $arr1, array $arr2): array
191
    {
192
        return array_merge($arr1, $arr2);
193
    }
194
195
    /**
196
     * Sort array by value.
197
     *
198
     * @param array $arr
199
     * @param bool  $isAscendingOrder
200
     *
201
     * @see https://www.php.net/manual/en/array.sorting.php
202
     */
203
    public static function sort(array &$arr, bool $isAscendingOrder = true)
204
    {
205
        self::sortByValue($arr, $isAscendingOrder);
206
    }
207
208
    /**
209
     * Sort array by key.
210
     *
211
     * @param array $arr
212
     * @param bool  $isAscendingOrder
213
     *
214
     * @see https://www.php.net/manual/en/array.sorting.php
215
     */
216
    public static function sortByKey(array &$arr, bool $isAscendingOrder = true): void
217
    {
218
        if ($isAscendingOrder) {
219
            ksort($arr);
220
        } else {
221
            krsort($arr);
222
        }
223
    }
224
225
    /**
226
     * Sort array by value.
227
     *
228
     * @param array $arr
229
     * @param bool  $isAscendingOrder
230
     *
231
     * @see https://www.php.net/manual/en/array.sorting.php
232
     */
233
    public static function sortByValue(array &$arr, bool $isAscendingOrder = true): void
234
    {
235
        if ($isAscendingOrder) {
236
            asort($arr);
237
        } else {
238
            arsort($arr);
239
        }
240
    }
241
242
    /**
243
     * Reverse array.
244
     *
245
     * @param array $arr
246
     */
247
    public static function reverse(array &$arr): void
248
    {
249
        $arr = array_reverse($arr, true);
250
    }
251
252
    /**
253
     * Pull element by key.
254
     *
255
     * @param array  $arr
256
     * @param string $key
257
     *
258
     * @return mixed|null
259
     */
260
    public static function pull(array &$arr, string $key)
261
    {
262
        $val = null;
263
264
        if (isset($arr[$key])) {
265
            $val = $arr[$key];
266
            unset($arr[$key]);
267
        }
268
269
        return $val;
270
    }
271
272
    /**
273
     * Remove element by value.
274
     *
275
     * @param array $arr
276
     * @param       $value
277
     *
278
     * @return void
279
     */
280
    public static function removeByValue(array &$arr, $value): void
281
    {
282
        $key = self::getKeyByValue($arr, $value);
283
        if (!empty($key)) {
284
            unset($arr[$key]);
285
        }
286
    }
287
288
    /**
289
     * Remove element key by value.
290
     *
291
     * @param array $arr
292
     * @param       $value
293
     *
294
     * @return mixed
295
     *
296
     * @see https://stackoverflow.com/questions/7225070/php-array-delete-by-value-not-key?rq=1
297
     */
298
    public static function getKeyByValue(array $arr, $value)
299
    {
300
        if (($key = array_search($value, $arr)) !== false) {
301
            return $key;
302
        }
303
    }
304
305
    /**
306
     * Convert array to object.
307
     *
308
     * @param $array
309
     *
310
     * @return mixed|null
311
     */
312
    public static function toObject($array)
313
    {
314
        $result = json_decode(json_encode($array), false);
315
316
        return is_object($result) ? $result : null;
317
    }
318
}
319