دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / شرط‌ها (PHP If...Else...Elseif)

شرط‌ها (PHP If...Else...Elseif)

30 دقیقه Article

تصمیم‌گیری در کد: If...Else...Elseif 🚦🤔

شرط‌ها ستونِ فقراتِ هوشمندیِ برنامه‌یِ شما هستند. آن‌ها به برنامه اجازه می‌دهند بر اساسِ داده‌هایِ مختلف، مسیرهایِ متفاوتی را طی کند.

ساختارِ پایه:

{code_block('if (condition) {\n // اجرا در صورت صحیح بودن\n} else {\n // اجرا در غیر این صورت\n}')}

بررسیِ چندین حالت (elseif):

وقتی جواب بله یا خیر نیست و چندین گزینه دارید، از elseif استفاده می‌کنید. یادتان باشد به محض مثبت شدنِ یکی از شرط‌ها، بقیه نادیده گرفته می‌شوند.

عملگرِ Ternary (شرطِ تک‌خطی) ⚡

برایِ نوشتنِ کدهایِ تمیزتر و کوتاه‌تر:

{code_block('$status = ($age >= 18) ? "مجاز" : "غیرمجاز";')}
نحو جایگزین (Alternative Syntax): PHP سبکی دارد که برایِ استفاده داخلِ فایل‌هایِ HTML بسیار خواناتر است: {code_block('if ($a == $b):\n echo "برابرند";\nendif;')}
اشتباه در تساوی: نوشتنِ if($x = 5) به جایِ if($x == 5) یکی از بزرگترین باگ‌هایِ تاریخ است! اولی مقدار ۵ را به متغیر می‌دهد (که همیشه true است) و دومی مقدار را مقایسه می‌کند.

مثالِ کامل:

{code_block('$t = date("H");\nif ($t < "12") {\n echo "صبح بخیر";\n} elseif ($t < "20") {\n echo "روز بخیر";\n} else {\n echo "شب بخیر";\n}')}
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی منطق و پرفورمنس در PHP 🐘⚙️

در سطوحِ حرفه‌ای، اجرایِ کد فقط کافی نیست؛ "چگونگیِ" اجرا و بهینه‌سازیِ آن تفاوتِ بینِ یک کدِ معمولی و یک معماریِ مقیاس‌پذیر را رقم می‌زند.

۱. بهینه‌سازیِ محاسبات با BCMath

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

۲. ساختارِ HashTable در آرایه‌ها

آرایه‌ها در PHP برخلافِ بسیاری از زبان‌ها، در واقع Ordered Hash Maps هستند. هر زمان که شما عضوی به آرایه اضافه می‌کنید، PHP یک سیستمِ Bucket و Hash را در پشتِ صحنه مدیریت می‌کند تا سرعتِ دسترسی به داده‌ها در حالتِ میانگین O(1) باقی بماند.

۳. مفهومِ Closures و کپسوله‌سازی

توابعِ بی‌نام (Anonymous) در PHP فقط برایِ کارهایِ موقت نیستند. با استفاده از کلمه کلیدی use، می‌توانید متغیرهایی را از اسکوپِ بیرونی به داخلِ تابع وارد کنید و یک Closure بسازید که پایه و اساسِ بسیاری از الگوهایِ طراحی مدرن است.

نکته طلایی: همیشه برایِ شرط‌هایِ پیچیده از Early Return استفاده کنید. به جایِ تودرتو کردنِ ifها، ابتدا حالت‌هایِ خطا را چک کرده و از تابع خارج شوید تا خواناییِ کد به حداکثر برسد.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

شرطِ زوج یا فرد Medium
سوال تمرین

یک متغیر $n = 8 دارید. با استفاده از if و عملگر باقیمانده (%)، اگر عدد زوج بود عبارت Even را چاپ کنید.

پاسخ تمرین
PHP
<?php
$n = 8;
if ($n % 2 == 0) {
  echo "Even";
}
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.