دستور شرطی if در PHP
دستور if در PHP از دستورات شرطی می باشد. یعنی اگر شما نمی خواهید بر اساس شرایطی خاص مجموعه دستوراتی را اجرا کنید باید از دستورات شرطی استفاده کرد.
کد زیر ساختار یک دستور if در PHP را نشان می دهد:
if ($x == 1) {
echo 'x is 1';
}
هر دستور if یک شرط دارد که باید داخل پرانتز بعد از کلیدواژه if قرار بگیرد. دستورات موجود در بدنه if زمانی اجرا می شوند که شرط داخل پرانتز true ارزیابی شود. این شرط می تواند شامل هر عملگر مقایسه ای یا منطقه ای باشد اما در PHP امکان استفاده از عبارات بولی وجود ندارد.
در کد بالا اگر x برابر با 1 باشد مقدار "x is 1" در خروجی چاپ می شود.
دستور if else در PHP
در زمان استفاده از if می توان با استفاده از elseif (به تعداد مورد نیاز) شرط را گسترش داد. هر شرط جدید تنها در صورت عدم تحقق شرط های قبل از خود اجرا خواهد شد. برای مثال در برنامه ای کاربر عددی را وارد می کند. بازه عدد باید بین 1 تا 3 باشد. در غیر این صورت پیغام خطا در خروجی چاپ می شود. عدد ورودی کاربر را n در نظر می گیریم:
if ($n == 1) {
echo 'n is 1';
} else if ($n == 2) {
echo 'n is 2';
} else if ($n == 3) {
echo 'n is 3';
} else {
echo 'n is invalid';
}
همانطور که در کد بالا مشاهده می کنید، دستور if شامل 3 شرط است. در صورتی که شرط اول برقرار باشد، شرط های بعدی کنترل نمی شود. اگر 3 شرط موجود در if برقرار نباشد، کد موجود در بدنه else اجرا خواهد شد. در واقع دستور if else به صورت زیر است:
- اگر شرط درست بود کد مربوط را اجرا کن در غیر این صورت شرط بعدی را کنترل کن.
- اگر هیچکدام از شرط ها درست نبود و دستور else وجود داشت، کدهای مربوط به آن را اجرا کن.
اگر هر شرط فقط یک خط داشته باشد، می توان برای if ها از آکولاد استفاده نکرد.
if ($n == 1)
echo 'n is: ' . $n;
دستورات if تو در تو
می توان در بدنه هر if از if دیگری به صورت تو در تواستفاده کرد.
if ($n > 10) {
if ($n < 20) {
echo "10 < n < 20";
}
}
مثال بالا صرفا برای نمایش یک if تو در تو بود کد بالا را می توان با یک if به صورت زیر نوشت:
if ($n > 10 && n < 20)
echo "10 < n < 20";
در کد بالا از عملگر منطقی && استفاده کردیم. برای حالتی که n از 10 بزرگتر و از 20 کوچکتر باشد.
شاید مفید باشد: عملگر ها در PHP
ساختار دستوری جایگزین برای if
در PHP برای دستورات شرطی یک ساختار جایگزین نیز وجود دارد. در این ساختار دستوری جایگزین آکولاد نخست در دستور if جای خود را به کاکتر دونقطه (:) می دهد و آکولاد دوم هم حذف می شود. در واقع برای شروع دستور از (:) و برای بستن دستور ( که از آکولاد بسته } ) استفاده می شد، از کلمه کلیدی endif استفاده می شود. مثال زیر را ببینید:
if ($x == 1):
echo 'x is 1';
elseif ($x == 2):
echo 'x is 2';
else:
echo 'x is something else';
endif;
در کد بالا به جای استفاده از آکولاد بسته از کلیدواژه endif استفاده کردیم. از ساختار دستوری جایگزین به دلیل راحت تر بودن در مشاهده پایان دستور، اغلب در مواردی که قرار است دستورات شرطی طولانی باشند، این ساختار ترجیه داده می شود.