Arr::where
Статический метод where класса Arr применяется
к массиву и возвращает отфильтрованный массив,
содержащий только те элементы, для которых callback-функция
вернула true. Первым параметром передаётся исходный
массив, вторым - замыкание или имя встроенной функции,
которая будет применяться к каждому элементу.
По умолчанию метод сохраняет ключи исходного массива.
Синтаксис
<?php
use Illuminate\Support\Arr;
$res = Arr::where($array, $callback);
?>
Пример
Давайте отфильтруем массив чисел, оставив только чётные значения:
<?php
use Illuminate\Support\Arr;
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$res = Arr::where($array, function ($value, $key) {
return $value % 2 === 0;
});
print_r($res);
?>
Результат выполнения кода:
Array
(
[1] => 2
[3] => 4
[5] => 6
[7] => 8
[9] => 10
)
Пример
Давайте отфильтруем элементы массива, оставив только строки длиннее 3 символов:
<?php
use Illuminate\Support\Arr;
$array = ['abcde', 'ab', 'abcdef', 'a', 'abc', 'abcd'];
$res = Arr::where($array, function ($value, $key) {
return strlen($value) > 3;
});
print_r($res);
?>
Результат выполнения кода:
Array
(
[0] => abcde
[2] => abcdef
[5] => abcd
)
Пример
Давайте отфильтруем ассоциативный массив по значению ключа:
<?php
use Illuminate\Support\Arr;
$array = [
'first' => 1,
'second' => 2,
'third' => 3,
'fourth' => 4,
'fifth' => 5
];
$res = Arr::where($array, function ($value, $key) {
return $value > 3;
});
print_r($res);
?>
Результат выполнения кода:
Array
(
[fourth] => 4
[fifth] => 5
)
Пример
Давайте используем встроенную функцию в качестве callback:
<?php
use Illuminate\Support\Arr;
$array = ['abcde', 'ab', 'abcdef', 'a', 'abc', 'abcd'];
$res = Arr::where($array, 'strlen');
print_r($res);
?>
Результат выполнения кода:
Array
(
[0] => abcde
[1] => ab
[2] => abcdef
[3] => a
[4] => abc
[5] => abcd
)