تست هوش با بازی اعداد شروع شد. از مسابقه جا نمونی 😀

اینجا کلیک کن
بریم برای شروع

توابع بی‌نام (Anonymous Functions) - آزمون آنلاین پی اچ پی php

تعداد سوال 21
قیمت رایگانــ
زمانسنج ندارد
رده‌سنی همه سنین
وضعیت فعال
نظرات ندارد

آشنایی با توابع بی‌نام (Anonymous Functions)

اول از همه بریم سراغ یکی از کاربردی‌ ترین ویژگی‌های PHP، یعنی توابع بی‌نام یا Anonymous Functions. این توابع همونطور که از اسمشون پیداست، اسمی ندارن و معمولا به عنوان آرگومان به توابع دیگه پاس داده میشن.

مثلا وقتی میخوای یه کار خاص رو روی هر کدوم از اعضای یه آرایه انجام بدی و نمیخوای یه تابع جداگانه براش تعریف کنی، این توابع حسابی به دردت میخورن.

یکی از جاهایی که خیلی ازشون استفاده میکنیم، توابع مثل array_map یا array_filter هست. مثلا فرض کن یه آرایه از اعداد داری و میخوای همه رو دو برابر کنی.

آشنایی با توابع بی‌نام (Anonymous Functions)

به جای اینکه یه تابع جدا بنویسی و بعد صداش کنی، میتونی همونجا یه تابع بی‌نام بنویسی و کار رو تموم کنی. خیلی باحاله، نه؟


$numbers = [1, 2, 3, 4, 5];
$doubled_numbers = array_map(function($n) {
    return $n * 2;
}, $numbers);

print_r($doubled_numbers);

کاربرد Closures

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

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


$factor = 10;
$add_factor = function($n) use ($factor) {
    return $n + $factor;
};

$numbers = [1, 2, 3, 4, 5];
$new_numbers = array_map($add_factor, $numbers);

print_r($new_numbers);

همونطور که دیدی، تونستیم متغیر $factor رو داخل تابع بی‌ناممون استفاده کنیم. این قابلیت رو Closures به ما میده.

بیا یه مثال دیگه بزنم تا حسابی جا بیفته:

  • استفاده در توابع مرتب‌سازی: برای مرتب‌سازی آرایه‌ها با usort میتونی از Closures استفاده کنی تا نحوه مرتب‌سازی رو بر اساس متغیرهای خارج از تابع تعیین کنی.
  • ایجاد توابع کارخانه‌ای: میتونی تابعی بنویسی که خودش یک Closure رو برگردونه. این مدل برنامه‌نویسی بهت انعطاف خیلی زیادی میده.

مفهوم توابع بازگشتی (Recursive Functions)

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

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

اگه میخوای درک کنی چطور کار میکنن، به دو نکته اساسی توجه کن:

  1. حالت پایه (Base Case): این همون شرطیه که تابع رو از صدا زدن خودش متوقف میکنه. اگه این شرط نباشه، تابع تا بی‌نهایت ادامه پیدا میکنه و به ارور Stack Overflow میخوری.
  2. فراخوانی بازگشتی (Recursive Call): همونجایی که تابع خودش رو دوباره صدا میزنه ولی این بار با داده‌های کوچکتر.

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


function factorial($n) {
    // حالت پایه
    if ($n <= 1) {
        return 1;
    }
    // فراخوانی بازگشتی
    return $n * factorial($n - 1);
}

echo factorial(5); // نتیجه: 120

جدول مقایسه

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

ویژگی Anonymous Function Closure Recursive Function
اسم ندارد ندارد دارد
دسترسی به متغیرهای بیرونی ندارد دارد (با استفاده از use) دارد (معمولی)
کاربرد اصلی پاس دادن به توابع دیگر دسترسی به Scope بیرونی حل مسائل تکراری

با این اطلاعاتی که بهت دادم، الان میتونی با خیال راحت در آزمون مربوط به این مباحث شرکت کنی و مطمئن باشی که به بیشتر سوال‌ها جواب میدی. این آزمون بهت نشون میده که درک درستی از این مفاهیم کلیدی داری و میتونی کدنویسی حرفه‌ای‌تری داشته باشی.

تعداد سوال 21
قیمت رایگانــ
زمانسنج ندارد
رده‌سنی همه سنین
وضعیت فعال
نظرات ندارد
معمای امروز 28 مهر 1404 - ترکیب اعداد و حروف - مخصوص ای کیو بالای 100

معمای امروز 28 مهر 1404 - ترکیب اعداد و حروف - مخصوص ای...

طبق معمول هر روز صبح ساعت 8 ، باز هم یک پازل عددی و حروفی سخت داریم. پازل...

معمای پیدا کردن رمز - 27 مهر 404 - 200 تومن داخل این کیفه می تونی رمزش رو پیدا کنی ؟

معمای پیدا کردن رمز - 27 مهر 404 - 200 تومن داخل این...

خوب یک معمای واقعا سخت که حل کردنش کار آسونی نیست . در این معما یک رمز قوی...

تو چند حرکت می تونی رمز این قفل رو پیدا کنی ؟‌ بازی با اعداد - تست هوش

تو چند حرکت می تونی رمز این قفل رو پیدا کنی ؟‌ بازی...

یه بازی ساده براتون آوردم که در عین سادگی نیاز به هوش هم داره. کافیه طبق راهنما عدد...

پازل ترتیب اعداد - روی عدد درست از یک تا آخر به ترتیب کلیک کن

پازل ترتیب اعداد - روی عدد درست از یک تا آخر به ترتیب...

به نظر ساده میاد نه؟‌ ولی انقدرها هم که فکر می کنی ساده نیست . مخصوصا وقتی که...

تمدید پاسپورت بدون کارت پایان خدمت

تمدید پاسپورت بدون کارت پایان خدمت

بسیاری از جوانان و مشمولان نظام وظیفه با موضوع تمدید پاسپورت بدون کارت پایان خدمت درگیرند؛ به‌خصوص کسانی...

عمل بینی در تهران: هزینه، بهترین جراح و نکات مهم انتخاب پزشک

عمل بینی در تهران: هزینه، بهترین جراح و نکات مهم انتخاب پزشک

برای اینکه بتوانید بهترین جراح عمل بینی در تهران را پیدا کنید، ابتدا باید هدف خود از عمل...

تبلیغات پیامکی منطقه‌ای: راهنمای کسب‌ و کارهای محلی کم‌ هزینه

تبلیغات پیامکی منطقه‌ای: راهنمای کسب‌ و کارهای محلی کم‌ هزینه

تبلیغات پیامکی منطقه ای «SMS by Region» یک روش های رایج تبلیغات منطقه ای هدفمند است که برای...

پخش عمده پارچه فاستونی؛ مناسب تولیدی‌ها و فروشگاه‌های پوشاک

پخش عمده پارچه فاستونی؛ مناسب تولیدی‌ها و فروشگاه‌های پوشاک

پیدا کردن یک منبع مطمئن برای پخش عمده پارچه فاستونی همیشه...

آیا کاشت ریش عوارض دارد؟

آیا کاشت ریش عوارض دارد؟

ریش پرپشت ظاهری جذاب و خواستنی به مردان می دهد، اما هر مردی از نظر ژنتیکی برنامه ریزی...

قرص و مکمل سوی منوپوز - عوارض - فواید مصرف soy menopause

قرص و مکمل سوی منوپوز - عوارض - فواید مصرف soy menopause

مکمل soy menopause یا سوی منوپوز چیست ؟ مکمل های «سوی منوپوز» در اصطلاح به مکمل هایی گفته...

توابع در زبان برنامه نویسی PHP - آزمون آنلاین برنامه نویسی

توابع در زبان برنامه نویسی PHP - آزمون آنلاین برنامه نویسی

بررسی دقیق توابع در زبان برنامه نویسی PHP توابع یکی از اساسی‌ترین و کاربردی‌ترین قسمت‌های هر زبان برنامه...

طرز تهیه "لواشک خانگی" آلو زرد و آلوی سیاه و گوجه سبز در آفتاب و بدون آفتاب

طرز تهیه "لواشک خانگی" آلو زرد و آلوی سیاه و گوجه سبز در...

مواد لازم برای تهیه لواشک آلوچه سبز گوجه سبز 3 کیلو آب 1 لیوان نمک 1 ق چ...