Метод search
Метод search применяется к коллекции Laravel
и возвращает индекс первого найденного элемента,
удовлетворяющего условию поиска. Первым параметром
передаётся значение для поиска или замыкание
с условием. Вторым параметром можно передать
флаг строгого сравнения.
Синтаксис
<?php
$collection->search($value, $strict);
?>
Пример
Давайте найдём индекс элемента со значением 'abcde':
<?php
use Illuminate\Support\Collection;
$collection = new Collection(['a', 'b', 'abcde', 'd', 'e']);
$res = $collection->search('abcde');
echo $res;
?>
Результат выполнения кода:
"2"
Пример
Давайте выполним поиск с использованием замыкания:
<?php
use Illuminate\Support\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$res = $collection->search(function ($item) {
return $item > 3;
});
echo $res;
?>
Результат выполнения кода:
"3"
Пример
Строгое сравнение с использованием флага true:
<?php
use Illuminate\Support\Collection;
$collection = new Collection(['1', 2, 3, 4, 5]);
$res = $collection->search('1', true);
var_dump($res);
?>
Результат выполнения кода:
"false"
Пример
Поиск элемента в ассоциативном массиве:
<?php
use Illuminate\Support\Collection;
$collection = new Collection([
'first' => 'a',
'second' => 'b',
'third' => 'c'
]);
$res = $collection->search('b');
echo $res;
?>
Результат выполнения кода:
"second"
Пример
Поиск по условию в коллекции моделей:
<?php
use App\Models\User;
use Illuminate\Support\Collection;
$users = User::where('status', 'active')->get();
$res = $users->search(function ($user) {
return $user->age > 25;
});
echo $res !== false ? $res : 'not found';
?>
Результат выполнения кода:
"0"
Смотрите также
-
метод
where,
который фильтрует коллекцию по заданному условию -
метод
contains,
который проверяет наличие элемента в коллекции -
метод
firstWhere,
который возвращает первый элемент по условию -
метод
filter,
который фильтрует коллекцию с помощью замыкания