آموزش متد search کالکشن لاراول موضوع مورد بحث در این مقاله از باورژن است. از متد سرچ برای جستجو کردن یک مقدار در یک کالکشن استفاده میشود. اگر مقدار در مجموعه وجود داشته باشد، کلید مقدار را ریترن میکند. اگر مقدار با هیچ آیتمی مطابقت نداشته باشد، false
برگردانده میشود.
متد search کالکشن لاراول
جستجو به دو صورت انجام می شود.
- جستجو با مقایسه سُست (loose comparison)
- جستجو با مقایسه سختگیرانه (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 رو "عنصر" ترجمه میکردن و من همیشه میرفتم تو شیمی و جدول مندلیف. تو باورژن سعی کردم تا حد ممکن مطالب رو با زبان ساده و قابل درک بنویسم. باشد که کسانی که تازه پا به عرصه برنامهنویسی گذاشتن، راغبتر بشن و با نظرات و فیدبکهای شما راه هموارتر بشه:)
دیدگاهها
ثبت دیدگاه