Метод reject
Метод reject применяется к коллекции и возвращает новую коллекцию,
из которой удалены все элементы, прошедшие проверку через переданное
замыкание или условие. Первым параметром передаётся замыкание,
которое принимает элемент коллекции и возвращает true для
элементов, которые нужно исключить. Если условие истинно для элемента,
то этот элемент не попадает в новую коллекцию.
Синтаксис
<?php
$collection->reject(callable $callback);
?>
Пример
Давайте исключим из коллекции все чётные числа:
<?php
use Illuminate\Support\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$res = $collection->reject(function ($item) {
return $item % 2 === 0;
});
echo $res;
?>
Результат выполнения кода:
[1, 3, 5]
Пример
Давайте исключим из коллекции строки, длина которых меньше 5 символов:
<?php
use Illuminate\Support\Collection;
$collection = new Collection(['abcde', 'abc', 'abcdef', 'ab', 'abcde']);
$res = $collection->reject(function ($item) {
return strlen($item) < 5;
});
echo $res;
?>
Результат выполнения кода:
["abcde", "abcdef", "abcde"]
Пример
Давайте исключим из коллекции элементы, содержащие определённую подстроку:
<?php
use Illuminate\Support\Collection;
$collection = new Collection(['article', 'post', 'category', 'user']);
$res = $collection->reject(function ($item) {
return str_contains($item, 'ar');
});
echo $res;
?>
Результат выполнения кода:
["post", "user"]
Пример
Давайте исключим из коллекции элементы, используя короткий синтаксис с передачей имени метода в качестве строки:
<?php
use Illuminate\Support\Collection;
$collection = new Collection([true, false, true, false, true]);
$res = $collection->reject('is_null');
echo $res;
?>
Результат выполнения кода:
[true, false, true, false, true]
Пример
Давайте исключим из коллекции элементы, используя метод с доступом к ключам:
<?php
use Illuminate\Support\Collection;
$collection = new Collection(['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4]);
$res = $collection->reject(function ($value, $key) {
return $key === 'b' || $value > 3;
});
echo $res;
?>
Результат выполнения кода:
{"a": 1, "c": 3}
Пример
Давайте исключим из коллекции элементы, используя модель Eloquent:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Support\Collection;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::all();
$res = $articles->reject(function ($article) {
return $article->status === 'draft';
});
echo $res;
}
}
?>
Результат выполнения кода:
[
{"id": 1, "title": "article", "status": "published"},
{"id": 3, "title": "category", "status": "published"}
]