آموزش شرط در PHP به‌همراه ترفندهای کار با آن

شرط‌ها در زبان‌های برنامه نویسی به ما اجازه تصمیم‌گیری می‌دهند. با ساختار شرط در PHP می‌توانیم بر اساس موقعیت یا شرایط دلخواه، کار خاصی انجام دهیم. در این آموزش به آموزش شرط‌ها در پی‌اچ‌پی پرداخته و با ۴ ساختار و ۲ نوع if در PHP آشنا خواهیم شد.

عبارات شرطی (Conditional statements) برای انجام کارها طبق شرایط خاص استفاده می‌شوند. همه زبان‌های برنامه‌نویسی کاربردی و موفق ساختار شرطی را در نحو (syntax) خود پیاده‌سازی کرده‌اند.

در زبان PHP از کلمه کلیدی if برای شروع شرط استفاده می‌شود. این کلمه در انگلیسی به معنای «اگر» است.

  • اگر امروز دوشنبه بود، پیغام تبریک نمایش بده!
  • در صورتی که کاربر عدد 23 را وارد کرد، به او اجازه نمایش محتوای سایت را بده!
  • اگر نام کاربری و رمز عبور صحیح بود، کاربر را وارد سیستم کن!

تمام این‌ها شرط‌های ساده‌ای هستند که با اولین ساختاری که در ادامه یاد بگیریم می‌توانیم آن را بنویسیم.

شرط‌ها در PHP

به مثال‌های بالا توجه کنید. این شرط‌ها از دو بخش اصلی تشکیل شده‌اند:

  • عبارت شرط
  • بدنه شرط

عبارت شرط (statement) همان بخشی است که پس از کلمه «اگر» آورده می‌شود. با برقرار بودن این شرط، بدنه آن اجرا می‌شود.

ساده‌ترین ساختار شرطی در PHP همین است!

شرط‌های PHP به چهار نوع تقسیم‌بندی می‌شوند:

  1. ساختار if
  2. کلمه کلیدی else
  3. ساختار elseif
  4. ساختار switch

در ادامه این چهار مورد را با مثال بررسی می‌کنیم.

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

دیاگرام ساده‌ترین شرط در برنامه‌نویسی
دیاگرام ساده‌ترین شرط در برنامه‌نویسی

ساختار شرط PHP

یک شرط ساده در PHP به صورت زیر تعریف می‌شود:

if (condition) {
    #code if condition is true;
}

منظور از condition همان شرط مورد نظر ماست. این شرط باید مقداری منطقی (Boolean) به صورت true یا false بازگرداند.

محدوده کدهای مرتبط با if درون علامت { و } قرار می‌گیرد. به این علامت‌ها Curly Bracket گفته می‌شود. (معادل فارسی آن کمانک است که تقریباً استفاده نمی‌شود!)

فرض کنید متغیری به نام $score داریم. می‌خواهیم اگر نمره کاربر بیشتر از 10 بود، به او پیام تبریک قبولی بدهیم.

<?php
$score = 14;

if ($score > 10) {
    echo "You Pass the Exam!";
}
?>

به همین سادگی!

درون محدوده شرطی می‌توانیم از شرط‌های پیچیده‌تری هم استفاده کنیم. برای تعریف چند شرط، از عملگرهای منطقی (and و or و not) استفاده می‌شود. (ببینید: انواع عملگر در PHP)

مثلاً دو متغیر x و y داریم. به کمک شرط زیر، اگر x بزرگ‌تر از 50 و y کوچک‌تر از 100 بود، آن‌ها را در هم ضرب کرده و چاپ می‌کنیم. سپس مقدار دو متغیر را برابر صفر تعریف خواهیم کرد.

<?php
if ($x > 50 and $y < 100) {
    echo x*y;
    $x = 0;
	$y = 0;
}

اگر کد درون محدوده شرط فقط یک خط بود، می‌توانیم از گذاشتن علامت‌های } و { صرف‌نظر کنیم. اما پیشنهاد می‌شود برای خوانایی بهتر همیشه با این علامت‌ها محدوده کدهای خود را مشخص کنید.

شرط پیچیده با else در PHP

به حرف‌های شرطی که در زندگی روزمره می‌زنیم توجه کنید:

اگر نمره‌ام بیشتر از 18 شد، بستنی می‌خوریم در غیر این‌صورت فقط شیرینی می‌دهم!

صرف‌نظر از این‌گونه صحبت‌ها که هیچ وقت شیرینی کذایی را نمی‌خوریم 🙂 ؛ این شرط‌ها از سه بخش تشکیل شده‌اند.

بخش اول آن که شبیه ساختار عادی if در PHP است. اما قسمت «در غیر این‌صورت» به آن اضافه شده است.

به ساختار زیر دقت کنید:

if (condition) {
  #if-code
} else {
  #else-code
}

در این ساختار، اگر شرط condition برقرار (معادل true) بود، قطعه کد if-code اجرا می‌شود. اگر شرط برقرار نبود، قسمت else-code اجرا خواهد شد.

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

<?php
# calculate $score

if ($score > 10) {
    echo "You Pass the Exam!";
} else {
    echo "You have to Try Again!";
}

ساختار شرطی elseif در PHP

بیایید کمی با ساختارهای حرفه‌ای در شرط‌های PHP کار کنیم.

برای تعریف شرط «اگر ….. آنگاه ….. در غیر این‌صورت اگر ….. آنگاه ….. وگرنه ….. » از کلمه کلیدی elseif کمک می‌گیریم.

if (condition1) {
  #code-1
} elseif (condition2) {
  #code-2
} else {
  #code-3
}

اگر شرط اول برقرار نبود، شرط دوم بررسی می‌شود؛ اگر آن هم برقرار نبود، کد سوم که مربوط به بخش else آخری است اجرا خواهد شد.

فرض کنید می‌خواهیم در اسکریپت PHP خود به کاربر «وقت بخیر» بگوییم! برای این که کمی هوشمندتر کار کنیم، می‌خواهیم بر اساس شرط‌های زیر عمل کنیم:

  • اگر صبح بود (قبل از ساعت 11) به او صبح بخیر بگوییم.
  • اگر ظهر بود (بین 11 تا 20) به او روز بخیر بگوییم.
  • در غیر این‌صورت به او شب بخیر بگوییم.

برای این کار از تابع date() استفاده می‌کنیم. برای آشنایی بیشتر با این تابع می‌توانید آموزش کار با زمان در PHP را ببینید.

<?php
$t = date("H");

if ($t < "11") {
  echo "Have a good morning!";
} elseif ($t < "20") {
  echo "Have a good day!";
} else {
  echo "Have a good night!";
}
آموزش تابع در PHP و ترفندهای کار با Function

آموزش تابع در PHP و ترفندهای کار با Function

ترفندهای کار با شرط در PHP

تا اینجای آموزش با ساختار اصلی شرط‌ها در PHP آشنا شدیم. ساختار دیگری به نام switch وجود دارد که در بخش انتهایی به آن می‌پردازیم.

قبل از آن، بهتر است با ۲ ترفند حرفه‌ای در شرط پی اچ پی آشنا شویم.

حذف براکت از سینتکس شرط

پیش‌تر گفتم که در یک حالت می‌توانیم براکت را در شرط PHP قرار ندهیم؛ آن هم زمانی است که کد اسکوپ شرط (محدوده) فقط یک خط یا دستور است.

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

در این‌گونه مواقع، شاید استفاده از علامت‌های { و } باعث سخت‌تر شدن خوانایی کدهای ما شود. برای ساختار شرط در PHP می‌توانیم برای مشخص‌سازی محدوده کدها، از علامت دونقطه (:) نیز استفاده کنیم.

در این صورت، شروع محدوده با : بوده و پایان آن با دستور endif مشخص خواهد شد.

<?php
if ( $level == 11 && $name == "Omid" ):
    echo "Welcome to SabzDanesh Site " . $name . "!";
    # Some Codes Here...
endif;

به این نوع نحو یا سینتکس نوشتن در PHP اصطلاحاً alternative syntax یا نحوِ جایگزین گفته می‌شود.

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

شرط یک خطی در PHP

گاهی می‌خواهیم یک شرط کوچک را بررسی کنیم و استفاده از ساختار اصلی if در PHP کمی طولانی باشد!

یک حالت از تعریف شرط در PHP وجود دارد که به آن «شرط یک خطی» گفته می‌شود. در این شرط می‌توانیم یک ساختار if else ساده را فقط در یک خط ایجاد کنیم.

فرض کنید می‌خواهیم بر اساس سطح کاربری هر فرد، به کاربران سایتمان خوش‌آمد بگوییم. برای این کار متغیری داریم به نام isAdmin که مشخص می‌کند آیا کاربر مدیر است یا خیر.

یک روش استفاده از شرط ساده زیر و یک if و else است:

if ($isAdmin) {
  echo "Hello Dear Admin!";
} else {
  echo "Hello Dear User!";
}

به کمک شرط یک خطی پی اچ پی، پنج خط کد بالا تبدیل به یک خط خواهد شد:

echo "Hello Dear " . ($isAdmin ? "Admin" : "User") . "!";

در این مثال از ویژگی رشته‌ها استفاده کرده‌ام. برای آشنایی کامل با آن‌ها، آموزش رشته در PHP را بخوانید.

به if یک خطی در PHP اصطلاحاً دستور شرطی سه‌گانه (Ternary Operator) گفته می‌شود. ساختار ساده آن به صورت زیر است:

(condition) ? ($true_var) : ($false_var);

اگر شرط برقرار بود، مقدار بعد از علامت سؤال (به جای $true_var) محاسبه شده و در غیر اینصورت مقدار بعد از علامت دو نقطه ($false_var).

نوشتن فایل در PHP

نوشتن فایل در PHP

ساختار شرطی switch در PHP

یکی از ساختارهای حرفه‌ای شرطی در PHP ساختار switch و case است. این ساختار تحت عنوان دستور switch (سوییچ) یا switch case (سوئیچ کیس) هم نام برده می‌شود.

فرض کنید متغیری $day نشان‌دهنده شماره روز هفته است. می‌خواهیم طبق این عدد، نام روز را نمایش دهیم.

ابتدا باید بررسی کنیم اگر $day برابر 1 بود، امروز شنبه است؛ اگر 2 بود یک‌شنبه است و همین‌طور تا جمعه!

اولین چیزی که به ذهنمان می‌رسد، استفاده از 7 بلوک if elseif پشت سر هم است. برای سه روز اول داریم:

if ($day == 1){
    echo "Saturday";
} else if ($day == 2){
    echo "Sunday";
} else if ($day == 3){
    echo "Monday";
}
#and so on...

دستور switch در PHP برای ساده‌سازی این فرآیند تعریف شده است.

این دستور یک ورودی داشته و می‌تواند بی‌نهایت بلوک داشته باشد. هر بلوک از آن با کلمه کلیدی case مشخص می‌شود.

هر گاه در بلوکی مقدار ورودی switch با مقدار case برابر شد، کدهای پس از آن اجرا می‌شوند.

در نتیجه برنامه مورد نظرمان به صورت زیر نوشته می‌شود:

$day = 5;

switch ($day) {
    case 1:
        echo "Saturday";
        break;
    case 2:
        echo "Sunday";
        break;
    case 3:
        echo "Monday";
        break;
    case 4:
        echo "Tuesday";
        break;
    case 5:
        echo "Wednesday";
        break;
    case 6:
        echo "Thursday";
        break;
    case 7:
        echo "Friday";
        break;
}

استفاده از break در دستور switch

گفتیم که هر جا مقدار متغیر switch با case برابر شد، خطوط پس از آن اجرا می‌شود. برای اینکه یک محدوده برای کدها در نظر بگیریم از کلمه کلیدی break استفاده می‌کنیم.

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

با این روش یک محدوده بلوک برای هر case ایجاد می‌کنیم.

تعریف پیش‌فرض یا case default

می‌توانیم با تعریف یک کیس پیش‌فرض در switch، اگر هیچ کدام از caseها برابر مقدارهایشان نبودند، یک کار خاص انجام دهیم.

مثلاً در قطعه کد زیر کد یک رنگ را در متغیر $color قرار می‌دهیم. سپس با ساختار switch نام آن را نمایش می‌دهیم. اگر مقدار آن برابر هیچ کدام از کد رنگ‌های ما نبود، پیغام مبنی بر نبود کد رنگ چاپ می‌شود.

$color = "#0f2e3a";

switch($color) {
    case "#ff0000":
        echo "Red";
        break;
    case "#00ff00":
        echo "Green";
        break;
    case "#0000ff":
        echo "Blue";
        break;
    default:
        echo "Unknown";
}

جمع‌بندی: ساختار شرط در PHP

در این آموزش به طور جامع به آموزش شرط در پی‌اچ‌پی پرداختیم. شرط‌های PHP شبیه به زبان‌های محاوره‌ای ما هستند. فقط کافی است با syntax آن آشنا باشید تا بتوانید هر عبارت شرطی را بنویسید.

در ابتدا با عبارت شرطی if ساده آشنا شدیم. سپس فهمیدیم که می‌توان در صورت برقرار نبودن شرط، یک بلوک دیگر از کدها را تحت عنوان else اجرا کرد. برای ترکیب چند بلوک شرطی نیز از عبارت elseif بین if و else استفاده کردیم.

در اواسط آموزش با ۲ ترفند برای کار با شرط در PHP آشنا شده و توانستیم شرط‌ها را به صورت خواناتر میان کدهای HTML بنویسیم. همچنین تعریف شرط یک خطی را آموختیم.

در انتهای نیز با ساختار switch و case آشنا شده تا بتوانیم برخی از شرط‌های طولانی و شبیه به هم را به سادگی تعریف کنیم.

امیدوارم از این آموزش استفاده کرده باشید. اگر سؤال یا نکته‌ای دارید، بخش نظرات برای شماست!

این آموزش بخشی از یک آموزش جامع و قدم به قدم در سبز دانش است: دوره رایگان آموزش PHP