Laravel collection’s filter method calls array_filter() method on the underlying array, which, according to the PHP docs, preserves the array keys. This then results in your array being converted to a JavaScript object instead of an array.
You can find the collection filter method inside Illuminate\Support\Collection class. See the method below.
public function filter(callable $callback = null)
{
if ($callback) {
return new static(Arr::where($this->items, $callback));
}
return new static(array_filter($this->items));
}
The filter function takes a callback as an argument and run filter over each item. If the test fails for a particular item, then it will remove it from the collection.
Now, let’s see the example in action. For that, you need to install Laravel in your machine. I have already done it.
From now on, we will test each Laravel Collections Methods inside the routes >> web.php file.
Write the following code inside the web.php file.
<?php
// web.php
Route::get('/', function () {
$collection = collect([19, 21, 29, 46]);
$filtered = $collection->filter(function ($value, $key) {
return $value > 21;
});
dd($filtered->all());
});
So, we have checked each collection item against 21 and if any item > 21 in the collection then it will be included in a new array.
Now, start the Laravel server by typing the following command in your project root.
php artisan serve
Go to the http://localhost:8000, and you will see the following output.