وبلاگ

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


رقیه اباذری رقیه اباذری

آموزش متد search کالکشن لاراول موضوع مورد بحث در این مقاله از باورژن است. از متد سرچ برای جستجو کردن یک مقدار در یک کالکشن استفاده می‌شود. اگر مقدار در مجموعه وجود داشته باشد، کلید مقدار را ریترن می‌کند. اگر مقدار با هیچ آیتمی مطابقت نداشته باشد، false برگردانده می‌شود.

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

جستجو به دو صورت انجام می شود.

  1. جستجو با مقایسه سُست (loose comparison)
  2. جستجو با مقایسه سخت‌گیرانه (strict comparison)

جستجو با مقایسه سست در متد search کالکشن لاراول

جستجو با مقایسه سست به این معنی است که عدد صحیح به صورت استرینگ با عدد صحیح به صورت عدد صحیح، برابر در نظر گرفته می‌شوند. اگر بخواهید این مقایسه به صورت سخت‌گیرانه انجام شود، باید مقدار true را به عنوان آرگومان دوم به پارامتر پاس دهید. متد search کالکشن را می‌توانید در کلاس Illuminate\Support\Collection پیدا کنید. این متد را ادامه می‌بینید.

public function search($value, $strict = false)
{
     if (! $this->useAsCallable($value)) {
         return array_search($value, $this->items, $strict);
     }

     foreach ($this->items as $key => $item) {
         if (call_user_func($value, $item, $key)) {
             return $key;
         }
     }

     return false;
}

اگر بخواهیم متد search کالکشن را کالبدشکافی کنیم، در باطن متد array_search() را فراخوانی می‌کند. مثال زیر را ببینید.

این کدها را در مسیر routes >> web.php بنویسید.

<?php

// web.php

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

    echo $collection->search(19)."\n";

});

بعد از اجرای کردن پروژه لاراولی، عدد 1 را در خروجی خواهید دید. به این معنی که 19 در آرایه وجود دارد و کلید یا اندیس آن 1 است که بازگردانده شد.

جستجو با مقایسه سخت‌گیرانه در متد search کالکشن لاراول

بیایید اینار یک جستجوی سخت‌گیرانه انجام دهیم.

<?php

// app.php

Route::get('/', function () {
    $collection = collect([21, 19, 46, 29]);
    echo $collection->search('19', true);
});

خروجی این قطع کد false خواهد بود. اما چرا؟!! به این دلیل که به دنبال استرینگ با مقدار 19 بودیم نه عدد صحیح! و نکته دیگر اینکه ما مقایسه سخت‌گیرانه انجام دادیم چون پارامتر دوم را true قرار دادیم.

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

<?php

// app.php

Route::get('/', function () {
    $collection = collect([19, 21, 46, 29]);
    echo $collection->search(function($item, $key) {
        return $item > 19;
    });
});
 

در کد بالا، هر آیتمی از کالکشن که بزرگتر از 19 باشد ریترن می‌شود. اینجا 21 اولین آیتمی است که از 19 بزرگتر است و اندیس آن 1 است. بنابراین خروجی 1 خواهد بود.



رقیه اباذری
رقیه اباذری

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

مطالب مرتبط

بهترین پکیج‌های لاراول

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

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

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

کلاس‌های تک اکشن در کنترلر لاراول

فانکشن‌های جادویی در PHP وجود دارد که __invoke یکی از آن‌هاست. از طریق متد __invoke، فقط با یک فانکشن __invoke کلاس‌هایی را ایجاد می‌کنیم و هر زمان که آبجکت آن‌ها فراخوانی شود، مستقیماً متد __invoke را فراخوانی می‌کند. پس دیگر نیازی نیست به‌صورت دستی $obj->someFunction() را بنویسید.

مزایای منحصر به فرد استفاده از فریمورک لاراول

خدمات توسعه لاراول، جامعه PHP را غافلگیر کرده است. به جرات می‌توان گفت لاراول یکی از بهترین‌ فریمورک‌های PHP است که کار برنامه‌نویسی و کدزدن را سرعت بخشیده است. حتی ارتقا و توسعه هم با لاراول راحت‌تر شده است. به طوریکه توسعه برنامه به جای خسته‌کننده بودن، تبدیل به کاری جذاب و خلاقانه شده است.

دیدگاه‌ها