آموزش متد filter کالکشن در لاراول به همراه مثال

قبل از شروع معرفی متد فیلتر، بهتر است بدانیم کالکشن چیست؟ کلاس Illuminate\Support\Collection در لاراول یک wrapper است. این wrapper کار با داده‌هایی که از نوع آرایه هستند را برای ما فراهم کرده است. در کالکشن چند متد از جمله متد all()، Chunk()، Collapse و .... داریم. در این مقاله منحصرا متد filter کالکشن را با هم بررسی می کنیم. با ما همراه باشید.

متد filter کالکشن، همانطور که از نام آن پیداست، کار فیلتر را انجام می دهد. اما خب به چه صورت؟!

متد filter کالکشن در لاراول

این متد آیتم های یک مجموعه را با شرط مشخص شده در فانکشن callback فیلتر می‌کند. خروجی متد به صورت آرایه است. بعد از اعمال فیلتر، موارد دارای شرط فیلتر، نگه داشته می‌شوند. پس در خروجی آرایه‌ای از آیتم‌های منطبق با شرط را داریم.

 

همانطور که بالاتر اشاره کردیم، متد filter کالکشن در کلاس Illuminate\Support\Collection است. به متد زیر توجه کنید.

public function filter(callable $callback = null)
{
     if ($callback) {
         return new static(Arr::where($this->items, $callback));
     }

     return new static(array_filter($this->items));
}

فانکشن filter، یک callback را به عنوان آرگومنت می‌گیرد و فیلتر را روی هر مورد اجرا می‌کند. اگر نتیجه تست برای یک مورد خاص منفی بود، آن را از مجموعه خارج می‌کند.

 

خب برویم سراغ یک مثال عملی

متد filter کالکشن در لاراول را در مسیر routes >> web.php تست و پیاده سازی می‌کنیم. کدهای زیر را در پوشه web.php بنویسید.

<?php

// web.php

Route::get('/', function () {
    $collection = collect([19, 21, 29, 46]);

    $filtered = $collection->filter(function ($value, $key) {
        return $value > 21;
    });

    dd($filtered->all());
});

شرطی که در این متد بررسی می شود 21> است. اگر آیتمی پیدا شد که شرط را داشت، آن را در یک آرایه جدید می گذارد.

اکنون، با وارد کردن دستور زیر در root پروژه، سرور Laravel را شروع کنید.

php artisan serve

 

با وارد کردن آی پی http://localhost:8000 در مرورگر، خروجی زیر را خواهید دید:

فیلتر کالکشن لاراول با مثال

خروجی به این معناست که آرایه ای با تمام آیتم هایی که شرط 21 > را داشتند، برای ما لیست شده است. مسلما موارد باقیمانده هم از کالکشن حذف می شوند.

در صورت عدم انطباق با شرط callback، تمام داده های مجموعه که برابر با false هستند، حذف می شوند.

<?php

// web.php

Route::get('/', function () {
    $collection = collect([0, 1, 2, 3, 4, 5]);

    $filtered = $collection->filter();

    dd($filtered->all());
});

در کد بالا، ورودی 0 حذف شده است. دلیل این است که 0 به عنوان یک متغیر boolean که false است در نظر گرفته شده است. خروجی به شکل زیر خواهد بود.

متد فیلتر در لاراول

رقیه اباذری

رقیه اباذری

تو دانشگاه IT خوندم و اکثر منابع کتاب‌های ترجمه شده بودند و صدالبته مبهم :( مثلا element رو "عنصر" ترجمه می‌کردن و من همیشه می‌رفتم تو شیمی و جدول مندلیف. تو باورژن سعی کردم تا حد ممکن مطالب رو با زبان ساده و قابل درک بنویسم. باشد که کسانی که تازه پا به عرصه برنامه‌نویسی گذاشتن، راغب‌تر بشن و با نظرات و فیدبک‌های شما راه هموارتر بشه:)

دیدگاه‌ها


ثبت دیدگاه