وبلاگ

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

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

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

لاراول فریمورکی برای سرعت بخشیدن به کدنویسی

مقاله‌های زیادی درباره مقایسه فریمورک لاراول با سیموفنی یا مواردی از این قبیل در سطح اینترنت یافت می‌شود. با این حال در این مقاله قصد مقایسه فریمورک‌ها را نداریم. بلکه سعی در توضیح مزایای لاراول و امکانات فریمورک لاراول داریم. امکانات بی‌نظیری که باعث شده است برنامه‌نویسان زیادی به سمت برنامه‌نویسی لاراول تغییر مسیر دهند

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

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

دیدگاه‌ها