وبلاگ

آموزش متد 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 خواهد بود.


برچسب‌ها: لاراول

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

مطالب مرتبط


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

کش کردن تاثیر زیادی در سرعت سایت دارد. لاراول به صورت از پیش نصب شده درایورهای کش دارد که با استفاده از آنها می‌توانید سرعت سایت را بهبود ببخشید.

اکسپورت دیتا در اکسل و CSV در لاراول 6 به همراه مثال

در این آموزش، نحوه اکسپورت داده‌های اکسل و CSV با استفاده از پکیج maatwebsite/excel را بررسی می‌کنیم. پکیج Laravel Excel یک ورژن PhpSpreadsheet متناسب سازی شده با لاراول است

آموزش ساخت سایت چندزبانه با استفاده از قابلیت محلی سازی در لاراول

قابلیت محلی سازی لاراول روش مناسبی برای بازیابی استرینگ‌ها به زبان‌های مختلف را برای ما فراهم می‌کند. در واقع با استفاده از این قابلیت است که می‌توانیم با کمترین اتلاف وقت، از چند زبان در وب سایت خود پشتیبانی کنیم.