انجمن های تخصصی علوم رایانه و هنرهای دیجیتال
آموزش گام به گام پی اچ پی php توضیحات بیشتر در مورد دستورات شرطي if، elseif و switch - نسخه‌ی قابل چاپ

+- انجمن های تخصصی علوم رایانه و هنرهای دیجیتال (https://www.forum.cgaria.com)
+-- انجمن: رایانه (https://www.forum.cgaria.com/forum-236.html)
+--- انجمن: برنامه نویسی | طراحی وب (https://www.forum.cgaria.com/forum-22.html)
+---- انجمن: برنامه نویسی (https://www.forum.cgaria.com/forum-26.html)
+----- انجمن: پی اچ پی | PHP (https://www.forum.cgaria.com/forum-89.html)
+----- موضوع: آموزش گام به گام پی اچ پی php توضیحات بیشتر در مورد دستورات شرطي if، elseif و switch (/thread-487.html)



آموزش گام به گام پی اچ پی php توضیحات بیشتر در مورد دستورات شرطي if، elseif و switch - Mohsen Omidvar - 01-02-2014

کنترل جریان در پی اچ پی با  دستورات شرطي if و switch

كنترل جريان به ترتيب و نحوه اجراي دستوراتپی اچ پی PHP برمي گردد . عبارات شرطي كه بخشي از دستورات كنترل جريان را تشكيل مي دهند براي اين هستند كه بسته به شرايط مختلف دستورات مختلفي اجرا شوند .

دستور if
اولين دستور كنترل جريان در php‌ دستورif است . كلمه if كه جزء كلمات رزرو شده php است در لغت به معناي اگر و آيا است . در واقع با استفاده از اين دستور بررسي مي كنيم كه آيا شرايط خاصي برقرار است يا خير و سپس مي گوئيم در صورت برقراري شرط يك دستور يا يك سري از دستورات اجرا شود . مانند كد زير :

کد php:
<?php
$d 
date("D");
if(
$d == "Fri")
echo 
"Have a good weekend!";
?>

قطعه کد بالا در صورتیکه مقدار متغیر ، برابر با عبارت Fri باشد پیغام مربوطه را چاپ می کند و در غیر اینصورت هیچ اقدامی انجام نمی دهد . حال اگر بخواهیم در صورت عدم برقراری شرط نیز اتفاقی بیفتد و دستور یا دستوراتی اجرا شود یک بخش دیگر به دستور if اضافه می شود و آن else می باشد به شکل زیر :
کد php:
<?php
$d 
date("D");
if(
$d == "Fri")
echo 
"Have a good weekend!";
else
echo 
"Have a good week day !";
?>

حتی می توانیم در صورت عدم برقراری شرط اول شرط دیگری را بررسی کنیم در اینصورت می توانید از ساختار elseif استفاده کرد :
کد php:
<?php
$d 
date("D");
if(
$d == "Fri")
echo 
"Have a good weekend!";
elseif(
$d == "Sat")
echo 
"Hi this is Saturday !";
elseif(
$d == "Sun")
echo 
"Hi this is Sunday !";
elseif(
$d == "Mon")
echo 
"Hi this is Monday !";
?>

این شکل نوشتن elseif معادل نوشتن یک else و if جداگانه است . مانند زیر :
کد php:
<?php
$d 
date("D");
if(
$d == "Fri")
echo 
"Have a good weekend!";
else
if(
$d == "Mon")
echo 
"Hi this is Monday !";
?>

احتمالا اکنون به این مطلب فکر می کنید که اگر شرایط مورد بررسی زیاد باشد تعداد بلوک های if زیاد می شود و خوانایی کد پائین می آید ؟ درست است . علاوه بر این سرعت اجرا هم در صورت وجود بلوک های متعدد if پائین می آید . راهکاری که برای این وضعیت پیش بینی شده است استفاده از دستور switch می باشد . که در ادامه به بررسی آن می پردازیم .

دستور switch 
این دستور به شکل کلی زیر نوشته می شود :
کد php:
<?php
switch($var)
{
case <
option1> : /* some php */ break;
case <
option2>: /* some php */ break;
.
.
.
default : 
 /* some php */ break;
}
?>

در این دستور به بررسی مقدار یک متغیر خاص می پردازیم و بر اساس مقادیر متنوع آن تصمیم گیری می کنیم . در قطعه کد بالا به جای مقادیر option که در علامت <> آمده است باید مقادیری از متغیر را بنویسیم که میخواهیم تساوی متغیر با آن مقدار خاص را بررسی کنیم . علامت <> بدین معنی است که باید این علامت و هرچه در آنست را برداشته و چیز دیگری (در اینجا مقدار) به جای آن بگذارید . به عنوان مثال یکی از قطعه کدهای بالا را با دستور switch می نویسیم :
کد php:
<?php
$d 
date("D");
switch(
$d)
{
case 
"Fri" : echo "Have a good weekend !";break;
case 
"Mon" : echo "Have a good week";break;
default : echo 
"Have a good weekday";
}
?>

در کد بالا مقدار متغیر d بررسی می شود اگر مقدار متغیر برابر با Fri باشد عبارت Have a good weekend چاپ شده و به خاطر رسیدن به دستور break کنترل برنامه به بعد از بلوک switch منتقل می شود . در حقیقت کاردستور break همین است که اجرای داخل دستور Switch را به پایان رساند . اگر دستور break وجود نداشته باشد از جایی که شرط case محقق شود تا رسیدن به اولین دستور break اجرای برنامه ادامه می یابد . اگر مقدار متغیر برابر با Mon باشد عبارت Have a good week چاپ می شود و اگر مقدار متغیر برابر هیچ یک از دو مقدار فوق (Fri و Mon) نباشد دستور default اجرا شده و عبارت Have a good weekday چاپ می شود . البته وجود دستور default اختیاریست . همچنین وجود دستور break نیز اختیاریست و صرفا به منطق اجرای برنامه و خواست برنامه نویس بستگی دارد . مثلا قطعه کد زیر را در نظر بگیرید :
کد php:
<?php
$d 
date("D");
switch(
$d)
{
case 
"Fri" : echo "Have a good weekend !";break;
case 
"Mon" : echo "Have a good week";
case 
"Thu" : echo "This is Thuesday";break;
default : echo 
"Have a good weekday";
}
?>

در این کد اگر مقدار متغیر برابر Mon باشد اول عبارت Have a good week چاپ شده و سپس به دلیل عدم وجود دستور break در انتهای این خط دستور case بعدی اجرا شده و عبارت This is Thuesday چاپ شده و بعد با رسیدن کنترل برنامه به دستور break کنترل برنامه به بعد از بلوک switch - case منتقل می شود .