دوره H آموزش PHP: درس 5: ساختار کنترلی (بخش 1)

دوره H آموزش PHP: درس 5: ساختار کنترلی (بخش 1)

دوره H آموزش PHP
درس 5 – ساختار کنترلی در PHP
بخش اول – شرط در PHP


دوره‌های H
دوره‌ی H، یک دوره‌ی فشرده می‌باشد که برای زبان‌های برنامه‌نویسی مختلفی در نظر گرفته شده است و در آن بصورت خلاصه و مفید، به بیان مهم‌ترین مباحث هر زبان برنامه‌نویسی پرداخته می‌شود تا بتوان در کوتاه‌ترین زمان ممکن، به ابتدایی‌ترین موارد موجود در یک زبان برنامه نویسی مسلط شد. برای مطالعه بیشتر و لیست تمامی دروس این دوره کلیک کنید...

برای شروع و ادامه‌ی این درس، ابتدا باید با مفهوم شرط در برنامه‌نویسی آشنا شوید که می‌توانید برای اینکار، مقاله‌ی «مفهوم شرط در برنامه‌نویسی» را مطالعه کنید. سپس در ادامه با فول کده همراه باشید.

دستورات if و else در PHP

شیوه‌ی نوشتن if و else در php به صورت زیر می‌باشد:

if (شروط) {
   کدهایی که در صورت درست بودن شرط اجرا خواهند شد
} else {
   کدهایی که در صورت درست نبودن شرط اجرا خواهند شد
}

در کد بالا، نتیجه‌ی شروط داخل پارانتز باید برابر true باشد تا بدنه‌ی if اجرا شود. و اگر درست نباشد، بدنه‌‍ی else اجرا خواهد شد. و البته فراموش نکنید که می‌توان از if بدون else هم استفاده کرد! به مثال زیر دقت کنید:

if ($age > 18) {
    echo "Welcome to fullkade";
}

حالا اگر سن کاربر که داخل متغیر age می‌باشد، بزرگتر از 18 نباشد، کد داخل بدنه‌ی if اجرا نخواهد شد.

استفاده از else

به مثال زیر دقت کنتید که دو عدد را بررسی کرده و سپس عدد بزرگتر را چاپ می‌کند:

<?php
$x = 10;
$y = 20;
if ($x >= $y) {
   echo $x;
} else {
   echo $y;
}

// Outputs "20"
?>

دو عدد یا مخالف هم هستند و یا مساوی که در صورت مخالف بودن نیز یکی کوچکتر و یکی بزرگتر می‌باشد! بنابراین سه حالت وجود دارد که در کد بالا ما بزرگتر را بررسی کرده‌ایم و اگر عدد x از y بزرگتر بود، بنابراین x چاپ شود و اگر نبود، y چاپ شود. همچنین در صورت مساوی بودن برایمان مهم نیست کدام چاپ شود و به خاطر همین در شرط خود تنها بزرگتر را بررسی نکرده‌ایم! بلکه بزرگتر یا مساوی را بررسی کرده‌ایم.

حالا الزامی نیست که کد را باید به صورت بالا نوشت تا کار کند! ما می‌توانیم کد بالا را به شکل دیگری بنویسیم:

<?php
$x = 10;
$y = 20;
if ($x <= $y) {
   echo $y;
} else {
   echo $x;
}

// Outputs "20"
?>

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

دستور else if

همانطور که در مفهوم شرط در برنامه‌نویسی گفته شد، برای else می‌توان شرط دیگری نوشت! که شکل کلی آن در PHP به صورت زیر است:

if (condition) {
  کدهایی که در صورت درست بودن شرط اجرا خواهند شد
} elseif (condition) {
  کدهایی که در صورت درست بودن شرط دوم اجرا خواهند شد
} else {
   کدهایی که در صورت درست نبودن هیچکدام از شرط‌ها اجرا خواهند شد
}

و همانطور که باید بدانید، می‌توان elseif هایی را پشت سر هم نوشت. به مثال زیر دقت کنید:

<?php
$age = 21;

if ($age<=13) {
   echo "هنوز بچه‌ای بابا برو شیرتو بخور.";
} elseif ($age>13 && $age<19) {
   echo "فلن واسا تا بلوغت کامل شه";
} else {
   echo "ماشلا دیگه واسه خودت مردی شدی";
}

//Outputs "Adult"
?>

در کد بالا، ما از «if، elseif و else» به صورت یکجا استفاده کرده‌ایم. متغیر «age» که برابر سن می‌باشد، سه حالت «کوچکتر یا مساوی 13»، «بین 13 و 19»، و همچنین «بزرگتر از 18» را بررسی می‌کند! ما در اینجا از اپراتور منطقی AND یا همان && برای بررسی بین 13 تا 19 استفاده کرده‌ایم و گفته‌ایم که «از 13 بزرگتر» و «از 19 کمتر» باشد. در واقع && همان «و» می‌باشد؛ که البته در درس سوم و بخش «اپراتورهای مقایسه»، به این موارد اشاره کرده بودیم.

اگر بدنه‌ی شروط تنها شامل یک دستور باشد! (منظور یک خط نیست و منظور یک دستور است که به ; ختم شود.)، آنگاه می‌توان از { } ها استفاده نکرد. برای مثال: (فرامنوش نکنید که فاصله‌های قبل از echo ها و حتی رفتن به خط بعدی نیز الزامی نبوده و تنها برای مرتب دیده شدن کد برای خودمان می‌باشند و در واقع کامپیوتر این فاصله‌ها را نادیده می‌گیرد.)
if($age<=13)
    echo "بچه ای";
else
    echo "ماشالا بزرگ شدی";

دستور switch

همانطور که می‌دانید، دستور switch case برای ساده‌تر کردن برخی از شروط else if که در آن قصد داریم مقادیر مختلف یک متغیر را بررسی کنیم استفاده می‌شود؛ شکل کلی switch در php به صورت زیر می‌باشد:

switch (n) {
  case value1:
    //code to be executed if n=value1
    break;
  case value2:
     //code to be executed if n=value2
     break;
  ...
  default:
    // code to be executed if n is different from all labels
}

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

$today = 1;

switch ($today) {
  case 1:
    echo "شنبه";
    break;
  case 2:
    echo "یکشنبه";
    break;
  case 3:
    echo "دوشنبه";
    break;
  case 4:
    echo "سه‌شنبه";
    break;
  case 5:
     echo "چهارشنبه";
     break;
  case 6:
     echo "پنجشنبه";
     break;
  case 7:
     echo "جمعه";
     break;
  default:
     echo "فعلا همچین روزی اختراع نشده";
}

//Outputs "شنبه"

نکاتی که باید به آن‌ها توجه داشته باشید:

  • اگر مقدار متغیر today به جای عدد یک رشته باشد؛ باید در هنگام نوشتن مقدار جلوی case ها، از “” یا ” استفاده کرد.
  • اصلا نیازی نیست که این بررسی‌ها را به صورت مرتب‌شده از یک تا 7 بنویسیم و می‌توانیم نامرتب بنویسیم! فقط نباید یک مقدار بیشتر از یک بار تکرار شود.
  • می‌توانیم داخل هر case از یک { } استفاده کنیم. اگر از آن استفاده نکنیم، متغیرهای تعریف شده در بدنه‌ی آن‌ها در بقیه‌ی case ها نیز اثر خواهند داشت.
    یعنی چه؟! فرض کنید شما داخل مورد 1، مقدار today را به 2 تغییر می‌دهید و در انتهای مورد 1 نیز آن را break نکرده‌اید! بنابراین مورد دوم بررسی شده و درصورت درست بودن اجرا خواهد شد و اگر متغیری در مورد 1 بود باشد، در آن نیز قابل دسترسی خواهد بود. و در واقع این یک قابلیت برای switch است.
  • نوشتن default الزامی نیست.

یک مثال دیگر برای درک بهتر switch:

$day = 'دوشنبه';

switch ($day) {
  case 'شنبه':
    echo 'حال ندارم';
    break;
  case 'یکشنبه':
  case 'دوشنبه':
  case 'سه‌شنبه':
    echo 'روز کاری';
    break;
  case 'چهارشنبه':
    echo 'خواب';
    break;
  default:
    echo 'بیکارم';
}

//Outputs "روز کاری"

در اینجا برای «یکشنبه» و «دوشنبه» هیچ چیزی ننوشته‌ایم! بنابراین در این محدوده چه یکشنبه باشد، چه دوشنبه و چه سه‌شنبه، کد داخل سه‌شنبه اجرا خواهد شد! و اینگونه می‌توانید برای چندین case، کد یکسانی بنویسید.


شرط‌های تودرتو
می‌توان داخل بدنه‌ی هر if و else و حتی case  و default از شرطهای دیگری استفاده کرد و یک if و else یا Switch جدیدی نوشت. که به این‌ها شرط‌های تودرتو گفته می‌شود.
درس بعدی (به زودی)درس قبلی

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

cp-codfk

نظرات ثبت شده بدون دیدگاه

توضیحات پیشنهادی نظرات اشتراک