دستورات شرطی در PHP

دستورهای شرطی if، else، else if و switch برای اتخاذ تصمیمات منطقی و کنترل جریان اجرای برنامه.

نمای کلی

ساختارهای شرطی به برنامه اجازه می‌دهند بر اساس برقرار بودن یا نبودن یک شرط مشخص (بررسی درست بودن یا نادرست بودن یک عبارت بؤلین)، مسیرهای متفاوتی از کد را اجرا کنند. این ساختارها پایه و اساس تمام منطق‌های تصمیم‌گیری در برنامه‌نویسی هستند.

دستورات if, elseif و else

دستور if شرط اولیه را بررسی می‌کند. اگر شرط برقرار نباشد، PHP به سراغ بخش‌های elseif می‌رود و در نهایت اگر هیچ‌کدام صادق نباشند، بلاک else اجرا می‌شود.

conditions-demo.php
<?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 سطح دسترسی مرتبط را چاپ کند. همچنین با عملگر سه‌تایی وضعیت فعال/غیرفعال بودن اکانت را نیز نمایش دهد.

بازگشت به نقشه راه