دستورهای شرطی if، else، else if و switch برای اتخاذ تصمیمات منطقی و کنترل جریان اجرای برنامه.
ساختارهای شرطی به برنامه اجازه میدهند بر اساس برقرار بودن یا نبودن یک شرط مشخص (بررسی درست بودن یا نادرست بودن یک عبارت بؤلین)، مسیرهای متفاوتی از کد را اجرا کنند. این ساختارها پایه و اساس تمام منطقهای تصمیمگیری در برنامهنویسی هستند.
if, elseif و else
دستور if شرط اولیه را بررسی میکند. اگر شرط برقرار نباشد، PHP به سراغ بخشهای elseif میرود و در نهایت اگر هیچکدام صادق نباشند، بلاک else اجرا میشود.
<?php
$score = 85;
// Standard if-elseif-else structure
if ($score >= 90) {
echo "Grade: A";
} elseif ($score >= 80) {
echo "Grade: B";
} else {
echo "Grade: C or below";
}
// Ternary Operator (Shorthand if/else)
$status = ($score >= 50) ? "Passed" : "Failed";
?>
switch
هنگامی که میخواهید یک متغیر را با مقادیر مشخص متعددی مقایسه کنید، استفاده از switch خوانایی کد را بسیار بالاتر از if-elseifهای طولانی میبرد. هر حالت با case مشخص میشود و نیازمند دستور break; است.
| ساختار | بهترین کاربرد | نحوه ارزیابی مقایسه |
|---|---|---|
| if / elseif / else | شرطهای پیچیده، دامنههای عددی و عبارات منطقی متغیر | ارزیابی بؤلین (True / False) |
| switch | مقایسه یک متغیر واحد با چندین مقدار دقیق (Equality) | مقایسه غیردقیق (==) با مقادیر case |
| Ternary (? :) | مقداردهی کوتاه تکخطی بر اساس یک شرط ساده | ارزیابی بؤلین تکخطی |
فراموش کردن دستور break در switch
اگر در انتهای هر case دستور break; را قرار ندهید، PHP بهصورت خودکار وارد caseهای بعدی میشود (پدیده Fall-through).
دستورات شرطی تو در توی عمیق (Deep Nesting)
قرار دادن چندین if داخل هم خوانی و نگهداری کد را سخت میکند. سعی کنید از تکنیک Early Return استفاده کنید.
برنامهای بنویسید که یک متغیر به نام $role (مانند "admin"، "editor" یا "subscriber") دریافت کرده و با دستور switch سطح دسترسی مرتبط را چاپ کند. همچنین با عملگر سهتایی وضعیت فعال/غیرفعال بودن اکانت را نیز نمایش دهد.