درس 19 از 19

دستور switch در PHP | آموزش کامل با مثال

بخش: مقدمه PHP

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

Syntax (ساختار) دستور switch

switch (expression) {
  case label1:
    // بلوک کد
    break;
  case label2:
    // بلوک کد
    break;
  case label3:
    // بلوک کد
    break;
  default:
    // بلوک کد
}

نحوه عملکرد آن به این صورت است:

  1. عبارت (expression) یک بار ارزیابی می‌شود.
  2. مقدار عبارت با مقادیر هر case مقایسه می‌شود.
  3. اگر تطابقی وجود داشته باشد، بلوک کد مرتبط با آن اجرا می‌شود.
  4. کلمه کلیدی break باعث خروج از بلوک switch می‌شود.
  5. اگر هیچ تطابقی پیدا نشود، بلوک کد default اجرا می‌شود.

Example

$favcolor = "red";

switch ($favcolor) {
  case "red":
    echo "Your favorite color is red!";
    break;
  case "blue":
    echo "Your favorite color is blue!";
    break;
  case "green":
    echo "Your favorite color is green!";
    break;
  default:
    echo "Your favorite color is neither red, blue, nor green!";
}

کلمه کلیدی break در PHP

وقتی PHP به کلمه کلیدی break می‌رسد، از بلوک switch خارج می‌شود. این کار باعث توقف اجرای کد شده و دیگر هیچ case دیگری تست نخواهد شد. بلوک کد آخر نیازی به break ندارد، زیرا بلوک در آنجا به پایان می‌رسد.

هشدار: اگر دستور break را در یک case (غیر از آخرین مورد) حذف کنید و آن مورد تطبیق داده شود، case بعدی نیز اجرا خواهد شد، حتی اگر مقدار آن با عبارت شما مطابقت نداشته باشد!

Example

اگر دستور break را از case "red" حذف کنیم، چه اتفاقی می‌افتد؟

در اینجا $favcolor برابر “red” است، بنابراین بلوک کد مربوط به case "red" اجرا می‌شود، اما چون دستور break ندارد، بلوک کد مربوط به case "blue" نیز اجرا خواهد شد:

$favcolor = "red";

switch ($favcolor) {
  case "red":
    echo "Your favorite color is red!";
  case "blue":
    echo "Your favorite color is blue!";
    break;
  case "green":
    echo "Your favorite color is green!";
    break;
  default:
    echo "Your favorite color is neither red, blue, nor green!";
}

کلمه کلیدی default در PHP

کلمه کلیدی default مشخص می‌کند که اگر هیچ caseای با عبارت مطابقت نداشت، چه کدی اجرا شود:

Example

اگر هیچ موردی تطبیق پیدا نکند، بلوک default اجرا می‌شود:

$d = 4;

switch ($d) {
  case 6:
    echo "Today is Saturday";
    break;
  case 0:
    echo "Today is Sunday";
    break;
  default:
    echo "Looking forward to the Weekend";
}

ترکیب Caseها

اگر می‌خواهید چندین case از یک بلوک کد یکسان استفاده کنند، می‌توانید آن‌ها را به این صورت مشخص کنید:

Example

استفاده از بیش از یک case برای هر بلوک کد:

$d = 3;

switch ($d) {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:  
    echo "The week feels so long!";
    break;
  case 6:
  case 0:
    echo "Weekends are best!";
    break;
  default:
    echo "Something went wrong";
}