آموزش برنامه نویسی پی اچ پی قسمت پنجم
در سری مقالات آموزش پیاچپی تقریبا پایه کار برای کدنویسی کاربردیتر را یاد گرفتهاید. در این جلسه میخواهیم کدنویسی شرطی را به شما آموزش دهیم و یاد بگیریم که چگونه شرایط مختلف را در پروژههای خود کنترل کنیم.
گاهی در برنامه نویسی شرایط پیش آمده را باید بتوانید پیشبینی و کنترل کنید. به عنوان مثال اگر کاربر هر نوع ورودی را وارد کرد، باید بدانید که چه عملیاتی بر روی ورودی انجام شود و تا نتیجه مورد نظر به وی نمایش داده شود. این اصول ساده عبارت شرطی در پیاچپی است!
همیشه سعی کنید یک الگورتیم مناسب را پیش از شروع کدنویسی در مورد پروژه مد نظرتان آماده کنید. ما در اینجا نمیخواهیم وارد مبحث الگورتیم شویم اما طرح کلی پروژه همراه با پیشبینی شرایط مختلفی که ممکن است رخ دهد را الگوریتم میگوییم. باز هم اشاره میکنیم که این تعریف صرفا به منظور فهم بهتر افراد تازه وارد به دنیای پیاچپی است و بنابراین زیاد به جزئیات آن توجه نکنید. بهتر است کمی در مورد الگوریتم نویسی و اصول آن در گوگل جستجو کنید پیش از هر پروژه، ترجیحا الگورتیم آن را آماده کنید.
دستور شرطی If
همانند تمامی زبانهای برنامهنویسی، دستور شرطی if یکی از مهمترین دستورهایی است که باید آن را یاد بگیرید. بعید به نظر میرسد در یک پروژه به دفعات از این دستور استفاده نکنید و همواره یکی از پر استفادهترین و البته کاربردیترین ابزارها برای کنترل شرایط مختلف در کدنویسی محسوب میشود. همانطور که در بالا اشاره کردیم، کنترل شرطی به کامپایلر پیاچپی میگوید که اگر (if) شرایط خاصی رخ داد آنگاه کدام عملیات را باید انجام داد. پیش از اینکه به سراغ ادامه آموزش برویم بهتر است یادآوری کنیم که این آموزش ادامه و دنباله آموزشهای قبلی است و برای درک این بخش باید سه جلسه قبلی را بخوبی فرا گرفته باشید.
برای استفاده از این دستور ابتدا if را نوشته و سپس در پرانتز مقابل آن شرط مورد نظر را مینویسیم و در نهایت قطعه کدی که در صورت صحیح بودن شرط قرار است اجرا شود را بین علامت } و { مینویسیم. به قطعه کد مثال زیر دقت کنید: (برای استفاده و اجرای این مثال مانند قبل xampp را اجرا کنید و یک فایل php جدید را با نام دلخواه بر اساس آمورشهای جلسات قبل ایجاد کنید. سپس کدهای زیر را در آن فایل نوشته و نتیجه را در مرورگر تست کنید.)
<?php //usiing if $var1 = "zoomit"; $var2 = "kojaro"; if ($var1 == "zoomit") { echo 'you will go to zoomit'; } ?>
خب در کد بالا ابتدا دو متغییر را تعریف و مقداردهی کردهایم. سپس دستور if را بکار گرفتهایم و در شرط آن با استفاده از عملگرهای کنترلی که در جلسه قبل به صورت کامل و مفصل آنها را توضیح دادیم، شرطی مورد نظر را وارد میکنیم. در صورتی که شرط داخلی پرانتز برقرار باشد، کدی که بین } و { قرار گرفته اجرا خواهد شد و در غیر اینصورت هیچ کدی اجرا نمیشود. از آنجا که شرط کد بالا برقرار است و نتیجه آن true است، پس کد بین براکتها اجرا خواهد شد و بنابراین عبارت you will go to zoomit در مرورگر کاربر نمایش خواهد یافت.
اما بگذارید شرط را تغییر دهیم تا این بار برقرار نباشد و در نتیجه False را برگرداند.
<?php //usiing if $var1 = "zoomit"; $var2 = "kojaro"; if ($var2 == "zoomit") { echo 'you will go to zoomit'; } ?>
از آنجا که مقدار متغیر var2 در کد بالا برابر با zoomit نیست پس شرط داخل پرانتز نتیجه false را بر میگرداند و در نتیجه کدی که بین } و { قرار گرفته این بار اجرا نمیشود.
کنترل بیشتر شرط با else
مثالهای بالا در واقع سادهترین شرکت استفاده از دستور شرطی if بودند. اما میتوانیم این دستور را در حالت پیشرفتهتری نیز بکار ببریم. مثلا بگوییم اگر شرط مورد نظر برقرار بود یک کد و اگر شرط برقرار نبود کد دیگری اجرا شود. برای این منظور باید از else نیز در دستور if استفاده کنیم. به مثال زیر توجه کنید:
<?php //using if ... else $var1 = "zoomit": $var2 = "kojaro"; if ($var1 == "zoomit") { echo "you will go to zoomit"; }else{ echo "you will not go to zoomit": }
همانطور که میبینید استفاده از else بسیار آسان است و کافی است آن را در دنباله دستور if بنویسیم و شرط مورد نظر برای شرایطی که عبارت مقابل if برقرار نباشد را بین در این بخش وارد کنید. در کد بالا ابتدا توسط دستور if بررسی میکنیم که آیا مقدار متغییر var1 برابر با zoomit است یا خیر. اگر شرط برقرار بود عبارت you will go to zoomit در مرورگر کاربر نمایش خواهد یافت و اگر شرط برقرار نبود، کدی که در بخش else قرار داده شده اجرا میشود که در اینجا عبارت you will not go to zoomit است.
حالا یک تمرین برایتان داریم! در کد بالا چون شرط برقرار است، مشخصا عبارتی که در مرورگر نمایان میشود you will go to zoomit خواهد بود. شما کد را به نحوی تغییر دهید که شرط برقرار نباشد و عبارت you will not go to zoomit در مرورگر نمایان شود.
روش کلی و استاندارد استفاده از if به همین سادگی بود که خدمتتان توضیح دادیم. اما میتوان از if به صورت مختصرتر و کاربردیتری هم استفاده کرد که فعلا کاری با آن روشها نداریم چراکه قصد ما ارائه روش آموزشی بسیار ساده و به دور از پیچیدگی است. در ادامه دروس و در مثالهای کاربردیتر و عملیتر با این حالات مختلف هم آشنا خواهید شد.
گفتیم که در عبارات شرطی که در دستور if بکار میبریم همیشه دو حالت بیشتر پیش نمیآید: یا شرط برقرار است که در این حالت مقدار true را بر میگرداند یا شرط برقرار نیست که در این حالت مقدار false را بر میگرداند. در برخی مواقع در کدنویسی شرایطی پیش میآید که نیاز دارید از این نکته با یک روش بسیار آسان بهره ببرید. ابتدا طبق معمول توجه شما را به مثال زیر جلب میکنیم و در ادامه آن را به طور دقیق مورد بررسی قرار میدهیم:
<?php $x = true; $y = false; if ($x){ echo "we are ture!"; }else{ echo "we are false!"; } ?>
حتما تعجب کردهاید که چرا به جای نوشتن یک شرط در مقابل دستور if فقط نام متغییر x را آوردهایم. بنظر شما نتیجه اجرای کد بالا چه خواهد بود؟ اگر نکات گفته شده را بخوبی فرا گرفته باشید باید بدانید که نتیجه کد بالا چاپ عبارت we are ture! در مرورگر خواهد بود. اما چرا؟ گفتیم هدف از شرطی که در پرانتز نوشته میشود نهایتا به دست آمدن یک true یا false یا همان صحیح و غلط بودن است. از آنجا که مقدار متغییر x را true تعیین کردهایم پس دستور if کاری به هیچ چیز ندارد جز خروجی که در این مثال خروجی متغییر x همان true است و در این حالت شرط برقرار بوده و در نتیجه we are true چاپ میشود. اما اگر به جای x در شرط دستور بالا y را قرار دهیم چه میشود؟ عبارت بخش else یعنی we are false! در مرورگر نمایان خواهد شد.
کنترل چند عبارت شرطی با else if
اما باز هم میتوان دستور if را پیشرفتهتر از این هم مورد استفاده قرار داد. فرض کنید در پروژه خود با شرایطی مواجه شدهاید که باید چند حالت مختلف را بررسی کنید و در صورتی که هر کدام از شرایط مورد نظر برقرار بود کد خاصی اجرا شود. در اینجا دو سناریو یا به اصطلاح برنامهنویسها، دو سولوشن (solution) یا همان راهحل اصلی برای این منظور وجود دارد. اول اینکه برای هر شرایطی یک دستور if جداگانه بنویسیم و دوم اینکه یک دستور if چند شرطه را مورد استفاده قرار دهیم. در پیاچپی میتوانید چندین شرط را به صورت همزمان با یک دستور if بررسی کنید. بدین منظور دقیقا مانند else باید از دستور else if استفاده کنید با این تفاوت که این بار در مقال else if هم میتوانید مثل if اصلی شرط تعیین کنید. البته دستورات دیگری نیز برای بررسی چند شرط وجود دارند و اصولا در php برای هر مسئلهای تعداد زیادی روش وجود دارد. به کد زیر توجه کنید:
<?php $site1 = "zoomit"; $site2 = "zoomg"; $site3 = "kojaro"; if ($site1 == "zoomit") { echo "site is zoomit"; }else if ($site1 == "zoomg") { echo "site is zoomg"; }else if ($site1 == "kojaro") { echo "site is kojaro"; }else{ echo "site is not in list"; } ?>
مثال بالا را به نوعی میتوان حالت استاندارد استفاده از دستور کامل if دانست. در ابتدا سه متغییر معرفی و مقدار دهی شدهاند. سپس با دستور if شرط اول را بررسی میکنیم که اگر مقدار متغییر site1 برابر با zoomit بود عبارت site is zoomit چاپ شود. سپس شرط دیگری را با else if بررسی میکنیم و میگوییم اگر متغییر site1 برابر با zoomg بود عبارت site is zoomg چاپ شود. در نهایت شرط سومی را نیز مجددا با دستور else if بررسی کردهایم که اگر site1 برابر با kojaro بود، عبارت site is kojaro چاپ شود. سپس در آخر با استفاده از دستور else به پیاچپی اعلام میکنیم که در صورت برقرار نبودن هیچکدام از این شرطها عبارت site is not in list در مرورگر چاپ خواهد شد.
استفاده از if به صورت تو در تو
دستور if را میتوانید به صورت تو در تو نیز استفاده کنید. با بزرگتر شدن پروژهها رفته رفته نیاز به استفاده از if به صورت تو در تو خواهید داشت. همچنین برای ساده سازی برخی کارها میتوان به صورت زیرکانه از if های تو در تو بهره گرفت. البته چون فعلا نیازی به استفاده از چنین حالتی نداریم و نیز نمیخواهیم مبحث را سنگینتر کنیم برای این حالت در حال حاضر یک مثال ساده میآوریم و در بخشهای پیشرفتهتر و انجام کدنویسی برای تمرینات عملی، بیشتر با این حالات و تکنیکها آشنا خواهید شد.
<?php $fname = "mojtana"; $lname = "bolhasani"; if ($fname == "mojtaba"){ if ($lname == "bolhasani") { echo " your full name is mojtaba bolhasani": } }else{ echo "your are not in list"; }
سعی کنید کد بالا را ابتدا خودتان تحلیل کنید. در ابتدا دو متغییر تعریف و مقدار دهی شدهاند. سپس در شرط اول بررسی میکنیم که آیا متغییر fname برابر با mojtaba است یا خیر. در صورتی که شرط برقرار نباشد کد بخش else اجرا خواهد شد و در صورتی که درست باشد پیاچپی به سراغ if دوم میرود و سپس در این if جدید بررسی میکنیم که آیا متغییر lname برابر با bolhasani است یا نه. اگر این شرط هم برقرار باشد در نهایت عبارت your full name is mojtaba bolhasani در مرورگر نمایان خواهد شد.
این حالت ساده استفاده از if تو در تو بود ولی همانطور که اشاره کردیم پیاچپی آنقدر دست توسعه دهنده را باز میگذارد که برای انجام هر کاری میتوان از روشها و سولوشنهای ابتکاری و پیشفرض زیادی بهره برد.
بررسی چند شرط به صورت همزمان
گاهی نیاز است تا چند شرط به صورت همزمان با هم برقرار باشند تا به کد اجازه دهیم عملیات خاصی را انجام دهد. بیایید ثابت کنیم پیاچپی چرا انقدر محبوب است! خب مثال بخش قبلی را به خاطر بیاورید که دو شرط را به صورت تو در تو بررسی کردیم. میتوان کد بالا را به این صورت هم نوشت:
<?php $fname = "mojtana"; $lname = "bolhasani"; if ($fname == "mojtaba" && $lname == "bolhasani") { echo " your full name is mojtaba bolhasani": }else{ echo "your are not in list"; } ?>
اگرچه کد بالا نسبت به مثال قبلی بسیار خلاصهتر و خواناتر است اما نتیجه کار یکی است! یکی از دلایل لذت بخش بودن برنامه نویسی با پیاچپی همین موارد است! در جلسه قبلی با عبارات کنترلی آشنا شدید و حالا در این مثال از آنها کمی استفاده کردیم. در دستور if میتوانید هر چقدر که دلتان میخواهد شرایط مختلف را به صورت همزمان با هم بررسی کنید. در کد بالا دو شرط به صورت همزمان بررسی میشوند و در صورتی که هر دو درست باشند، عبارت your full name is mojtaba bolhasani چاپ خواهد شد و در غیر این صورت هم که دیگر خودتان میدانید! البته چون در بین دو شرط نوشته شده عبارت && را قرار دادهایم وضعیت به این صورت پیش میرود چراکه && در صورتی true را بر میگرداند که هر دو طرف آن با هم برابر باشند. زیاد نگران این بخش هم نباشید و فقط سعی کنید آن را برای خود تحلیل کنید.
دیدید که با استفاده از دستور if میتوان شرایط مختلف و وضعیتهای گوناگون را در برنامه نویسی با php پیشبینی و کنترل کرد. برای فراگیرفتن هرچه بهتر این مبحث سعی کنید برای خود چند مثال ایجاد کنید. چند شرط را در نظر بگیرید و برای آن کد بزنید! سعی کنید از آرایهها نیز استفاده کنید. همچنین چند شرط را در دستور if بکار بگیرید تا بخوبی این مبحث را هم درک کنید.
منبع: www.zoomit.ir