دستورهای شرطی و کنترلی در PHP

06 مهر 1397
درسنامه درس 6 از سری آموزش PHP
php-season-3-1

خب دوستان عزیز وارد فصل ۳ می شویم و همراه شما عزیزان به آموزش مبحث جدید دستورهای شرطی و کنترلی در PHP می پردازیم. در این فصل قصد داریم برنامه نویسی را در سطح پیشرفته تری دنبال کنیم. با دستورهای شرطی و کنترلی می توانید برنامه خود را موظف به انجام یک سری وظایف کنید.

عبارت ها (Expressions) در PHP

در تمام زبان های برنامه نویسی کلمه «عبارت» یا expression وجود دارد.

عبارت یا expression به مجموعه ی ترکیب شده ای از مقادیر، متغییرها، عملگرها و توابع گفته می شود که نتیجه نهایی را در قالب یک مقدار درون یک متغییر ذخیره می کنند.

به مثال زیر توجه کنید:

y = 3(abs(2x) + 4)

که در زبان برنامه نویسی PHP این عبارت یا expression به صورت زیر نوشته می شود:

$y = 3 * (abs(2 * $x) + 4);

یعنی پس از انجام عملیات نتیجه نهایی درون متغییری به نام y ذخیره می گردد.

عبارت بولین یا به اصطلاح صحیح یا غلط (True or False) در PHP

به عبارت هایی که شامل خروجی صحیح یا غلط (True or False) هستند، مقادیر بولین Boolean گفته می شود.

به عنوان مثال حاصل عبارت 3 == 5 برابر است با FALSE، چون به صورت طبیعی این دو عدد با یکدیگر برابر نیستند.

شروط یا Conditionals در PHP

شروط یا شرط ها در واقع وظیفه ی هدایت برنامه شما را به عهده دارند. به عبارت دیگر آنها توانایی پرسیدن سوال از برنامه و مسیردهی درست آن متناسب با پاسخی که در اختیارشان قرار میدهند را دارند.

شروط در برنامه نویسی به تنهایی می توانند یک برنامه را پویا یا داینامیک کنند. در اینجا سه دستور شرطی بدون تکرار به نام های if و switch و عملگر ? وجود دارد. منظور از عبارت «بدون تکرار» دستوری است که درون یک حلقه ی دایره وار تکرار نشود.

دستور شرطی If در PHP

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

دستور شرطی if در Php

در این مثال از جمله اگر یا if استفاده کردیم. در عمل گفتیم اگر بنزین نداشتی به جایگاه برو! و اگر باک بنزین خود را پر کردی از جایگاه خارج شو!

در ساختار زبان برنامه نویسی PHP این دستورها به صورت زیر نوشته می شوند:

<?php
    if(conditional){
        //do something
    }
?>

ابتدا تگ های PHP را باز و بسته کرده ایم. درون تگ از دستور if به عنوان شرط برنامه استفاده کرده و عبارت شرطی را درون پرانتز () می نویسیم. اگر شرط برقرار بود یا به عبارت دیگر مقدار شرط معادل TRUE بود سایر دستورهای درون دو آکولاد { } اجرا می شوند. به مثال زیر توجه کنید:

<?php
	if ($benzin < 5)
	{
		$benzin = 100;
	}
?>

در این مثال داخل پرانتز مشخص می کنیم که آیا مقدار بنزین از عدد ۵ کمتر است یا خیر؟ اگر بنزین از ۵ لیتر کمتر بود ماشین به جایگاه رفته و باک بنزین را ۱۰۰ لیتر پر می کند و پس از آن برنامه به ادامه پردازش خود می پردازد. همچنین وقتی از شرط بیرون آمدیم مقدار بنزین برابر ۱۰۰ خواهد بود.

دستور شرطی else در PHP

برخی مواقع یک شرط ممکن است درست نباشد یا مقدار آن برابر FALSE شود ولی ما میخواهیم همچنان برنامه خود را کنترل کنیم. مثلا می خواهیم بگوییم اگر ماشین بنزین نداشت و جایگاه اول خراب بود به جایگاه دوم برو! در این حالت از یک دستور دیگر به نام else (به معنای فارسی در غیر این صورت) استفاده می کنیم. به تصویر زیر توجه فرمایید:

دستور شرطی else در php

همانطور که ملاحظه می کنید اگر ماشین به جایگاه اول رفت و خراب بود آنگاه مسیر را تغییر داده و به جایگاه دوم می رود. این حالت با دستور else تولید می شود و در زبان برنامه نویسی PHP به صورت زیر خواهد بود:

<?php
	if ($benzin < 5 && $station1 == 'سالم بود')
	{
		$road = 'جایگاه ۱';
		$benzin = 100;
		
	}else{
		$road = 'جایگاه ۲';
		$benzin = 100;
	}
?>

تنها کافیست بعد از دستور if، عبارت else را نوشته و آکولاد را باز و بسته کنید. در نهایت ادامه برنامه را درون این دو آکولاد قرار دهید.

دستور شرطی elseif در PHP

این دستور به عنوان یک ترکیب از دستور else و if می باشد. یعنی شما می گویید اگر ماشین بنزین نداشت و جایگاه ۱ خراب بود آنگاه اگر جایگاه ۲ خراب نبود بنزین را در جایگاه ۲ بزن. به مثال زیر توجه بفرمایید:

<?php
	if ($benzin < 5 && $station1 == 'سالم بود')
	{
		$road = 'جایگاه ۱';
		$benzin = 100;
		
	}elseif ($benzin < 5 && $station2 == 'سالم بود'){
		$road = 'جایگاه ۲';
		$benzin = 100;
	}else{
		$road = 'از کنار جاده بنزین تهیه کن';
		$benzin = 100;
	}
?>

مثال فوق یک شکل کامل از دستور شرطی if و elseif و else می باشد.

دستور شرطی elseif در PHP

دستور شرطی switch در PHP

دستور شرطی switch یکی از دستورهای بسیار مفید و کاربردی در تمام زبان های برنامه نویسی است که در آن یک متغییر می تواند مقادیر مختلفی را دریافت و متناسب با آن مقدار شرط را بررسی کرده و مجموعه ای از کدها را اجرا کند. برای مثال منوی وب سایتی را در نظر بگیرید که شامل عناوین «صفحه اصلی»، «درباره ما»، «اخبار»، «ورود» و «پیوندها» است. حالا میخواهیم برنامه ای بنویسیم که وقتی صفحه برابر یکی از این عناوین شد محتوایی را نمایش دهد. در این حالت اگر از دستور شرطی if استفاده کنیم به صورت زیر عمل خواهیم کرد:

<?php
	if ($page == "صفحه اصلی") echo "شما در صفحه اصلی قرار دارید";
	elseif ($page == "درباره ما") echo "شما در صفحه درباره ما قرار دارید";
	elseif ($page == "اخبار") echo "شما در صفحه اخبار قرار دارید";
	elseif ($page == "ورود") echo "شما در صفحه ورود قرار دارید";
	elseif ($page == "پیوندها") echo "شما در صفحه پیوند ها قرار دارید";
?>

و حالا همین مفاهیم را با دستور switch‌ ایجاد می کنیم:

<?php
	switch ($page)
	{
		case "صفحه اصلی":
			echo "شما در صفحه اصلی قرار دارید";
			break;
		case "درباره ما":
			echo "شما در صفحه درباره ما قرار دارید";
			break;
		case "اخبار":
			echo "شما در صفحه اخبار قرار دارید";
			break;
		case "ورود":
			echo "شما در صفحه ورود قرار دارید";
			break;
		case "پیوند ها":
			echo "شما در صفحه پیوند ها قرار دارید";
			break;
	}
?>

در این مثال در دستور switch یک متغییر به نام $page تعریف کردیم که مقادیر مختلفی را دریافت می کند. اگر مقدار page برابر صفحه اصلی باشد در این صورت عبارت «شما در صفحه اصلی قرار دارید» نمایش داده می شود. به عبارت دیگر اگر مقدار page برابر «صفحه اصلی» بود، کیس (وضعیت) اول اتفاق می افتد و با دستور break شرط از بین رفته و ادامه برنامه اجرا می شود. برای سایر مقادیر نیز همین روند ادامه دارد.

دستور Default

برای دستور شرطی switch می توانیم یک مقدار default یا پیش فرض تعریف کنیم که اگر هیچ یک از کیس های فوق اتفاق نیافتاد مقدار پیش فرض نمایش داده شود. بنابراین مثال بالا را به صورت زیر تغییر می دهیم:

<?php
	switch ($page)
	{
		case "صفحه اصلی":
			echo "شما در صفحه اصلی قرار دارید";
			break;
		case "درباره ما":
			echo "شما در صفحه درباره ما قرار دارید";
			break;
		case "اخبار":
			echo "شما در صفحه اخبار قرار دارید";
			break;
		case "ورود":
			echo "شما در صفحه ورود قرار دارید";
			break;
		case "پیوند ها":
			echo "شما در صفحه پیوند ها قرار دارید";
			break;
		default:
			echo "شما هیچ یک از گزینه های منو را انتخاب نکرده اید";
			break;
	}
?>

عملگر شرطی ? در PHP

یکی دیگر از راه های نوشتن دستور شرطی if استفاده از عملگر ?‌ می باشد که در یک خط می توان یک دستور if را اجرا کرد. این عملگر بدین صورت است که ابتدا مقدار شرط را می نویسم و سپس با عملگر ?‌ می گوییم که اگر شرط برقرار بود دستورهای بعد از عملگر ? را اجرا کن. سپس با علامت : (دو نقطه) می گوییم که در غیر اینصورت دستور بعدی که بعد از عملگر : قرار دارد با اجرا کن. به مثال زیر توجه بفرمایید:

<?php
	echo $benzin <= 5 ? "به اندازه کافی بنزین داری" : "برو بنزین بزن";
?>

در این مثال با عملگر ?‌ مشخص کرده ایم که اگر بنزین ماشین کمتر از ۵ لیتر بود برو و بنزین بزن، در غیر این صورت به اندازه کافی بنزنین داری و مسیرت رو ادامه بده!

بسیار عالی عزیزان. در این بخش به آموزش سه دستور شرطی if و switch و عملگر ?‌ پرداختیم. از اینکه همراه شما هستیم خوشحالیم. در بخش بعدی از فصل ۳ به آموزش حلقه ها می پردازیم.

جهت دریافت آموزش ویدیویی صفر تا صد PHP به همراه ساخت CMS مشابه وردپرس روی اینجا یا تصویر زیر کلیک کنید.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش PHP توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما (3 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر تهرانی
16 مرداد 1399
در مورد عملکر جدید php هم بزارید

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

زهرا
27 اسفند 1398
سلام ، كدهايي كه در هر مثال آورده شده كاملا به هم ريخته و نامرتب نشون داده ميشه. من تو گوشي دارم مطلب رو ميخونم. چرا اينطوريه؟مثلا اول عبارت php اومده بعد تب باز شده..

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر
29 شهریور 1397
سلام. بخش اپراتور ؟: رو اشتباه نوشتید. در مثالش باید جای دو عبارت پس از علامت ؟ عوض شه. اگر شرط درست باشه عبارت اول(از سمت چپ) اجرا میشه

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

روکسو
31 شهریور 1397
سلام وقت شما بخیر مثال مورد نظر بازنویسی شد. ممنون از شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.