شرط ها در PHP – مقدمه
در این بخش از آموزش پی اچ پی، می خواهیم با انواع شرط ها در PHP آشنا شویم. در ابتدا با آموزش دستور if در PHP شروع خواهیم کرد.
سپس دستور if else در php را مورد بررسی قرار خواهیم داد. سپس بررسی چندین شرط با دستور شرطی else if را تشریح خواهیم کرد.
در ادامه با دستور switch در پی اچ پی آشنا می شویم. سپس نحوه کار دستور switch و case را با چند مثال به صورت کامل بیان می کنیم. همین طور با دستور break در php آشنا می شویم و اینکه در یک ساختار شرطی switch چه نقشی را ایفا می کند.
در ادامه آموزش به روش های دیگر نمایش if/else خواهیم پرداخت و روش دیگری برای نمایش در کدها را تشریح می کنیم. به این روش alternative syntax گفته می شود که هنوز بسیاری در کدهای خود، استفاده می کنند.
سپس به دستور if یک خطی یا ternary operator می پردازیم. به این نوع دستور شرطی، دستور شرطی سه گانه نیز گفته می شود. سپس با چندین نکته در مورد استفاده از شرط ها در PHP و همین طور مثال های کاربردی در مورد آن ها، این مطلب آموزشی را ادامه خواهیم داد.
این آموزش، یکی از بخش های آموزش های رایگان PHP در سایت وبمستر وردپرس می باشد. در صورتی که می خواهید به کلیه بخش های این سری آموزشی رایگان دسترسی داشته باشید، می توانید از لینک زیر استفاده کنید:
چند نکته قبل از شروع آموزش شرط ها در PHP
شما برای آشنایی با انواع شرط ها و همین طور نحوه استفاده از دستورات شرطی درPHP، می توانید از مقاله این صفحه استفاده کنید.
این مقاله یکی از جامع ترین مقالات و کاربردی ترین آن ها در سطح وب فارسی می باشد. با خواندن این مقاله به راحتی به همه مفاهیم دستورات شرطی و انواع آن در PHP آشنا می شوید و عملا نیازی به سورس های اضافه تر نخواهید داشت.
فیلم ابتدایی قرار داده شده در این مقاله، بخش هایی از دوره آموزش PHP است که بخشی از دوره وبمستران وردپرس (دوره حضوری) می باشد.
برای تهیه کامل این فیلم، می توانید به سایت کلوپ وبمستران وردپرس (که مرجع آموزش های حرفه ای وبمستری برای وردپرس) می باشد، مراجعه کنید.
فیلم آموزش دستورات شرطی در PHP
بخش ۱ : چرا باید از ساختار های شرطی در PHP استفاده کنیم؟
فرقی ندارد که از کدام زبان برنامه نویسی استفاده کنید، در هر صورت نیاز دارید در برنامه نویسی، عکس العمل های برنامه را بسته به شرایط مختلف و شرط های گوناگون، تغییر دهید.
عموما یک برنامه کامپیوتری، ممکن است بر اساس شرط های مختلف و یا شرایط گوناگون در اجرا، خروجی های متفاوتی داشته باشد. یک برنامه کامپیوتری باید بتواند بر اساس شرط های داده شده، تصمیم بگیرد که چه عکس العملی را انجام دهد.
در زبان PHP هم مثل سایر زبان های برنامه نویسی، نیازمند به یک سری ساختارهای شرطی هستیم که بتوانیم روال اجرای برنامه بر اساس شرط های مختلف را کنترل کنیم.
برای این کار از دستورات شرطی در PHP استفاده می شود. در واقع ممکن است برای اجرای یک برنامه PHP، دو یا چند راه برای اجرا وجود داشته باشد. بنابراین برای انتخاب یکی از آن ها می باید از دستور های شرطی در پی اچ پی بهره ببریم.
پس در بسیاری از مواقع، ممکن است بخواهیم بر اساس یک سری شرط های خاص، مسیرهای مختلفی برای اجرای کد خود داشته باشیم. بنابراین در این موارد شرط ها در PHP به کمک ما خواهند آمد. این ممکن است شامل خروجی های مختلف در ازای دستورات شرطی در یک برنامه باشد.
بخش ۲ : دستور شرطی if در PHP
دستورات شرطی در php در واقع همان استفاده از « اگر » برای بیان یک شرط می باشد. ساده ترین حالت برای بیان یک دستور شرطی استفاده از یک تک شرط با کلمه کلیدی if می باشد.
یک نکته در مورد شرط if یک خطی در PHP
همانگونه که اشاره شد، شما می توانید در زمان داشتن فقط یک دستور برای درست بودن شرط if، از بلاک { } استفاده نکنید. اما best practice این می باشد که تمامی دستورات شرط if و else if و else در داخل curly bracket قرار گیرد.
در زیر چند مثال ساده برای درک بهتر دستور شرطی if در php زده شده است. در اولین بخش، فقط یک statement یا دستور برای چک کردن شرط وجود دارد. همچنین در صورت درست بودن شرط if ، فقط یک دستور اجرا خواهد شد.
در دومین بخش همچنان یک شرط با یک دستور برای چک شدن موجود است و در ادامه شرط در صورت درست بودن، بدون نیاز به استفاده از { } اجرا خواهد شد.
در سومین بخش چندین شرط داخل پرانتز توسط عملگر && یا and ، باهم مورد مقایسه قرار گرفته اند. در صورت درست بودن، دستورات داخل بلاک شرطی if ، اجرا خواهند شد.
در چهارمین بخش، چندین شرط در داخل پرانتز وجود دارد. همین طور در صورت true بودن شرط داخل پرانتز، کلیه دستورات داخل بلاک باز و بسته { } مورد اجرا واقع می گردند.
در بخش آخر نیز، برای چک کردن شرط از عملگر منطقی || یا or استفاده شده است. نمونه خروجی این موارد نیز در زیر این بخش نمایش داده شده است.
$name = "Mehdi"; $age = 37; $sex = "male"; $isMarried = false; $selected_numbers = array( 50, 61, 12, 38, 29 ); //Sample of if block with one statement if ( $name == "Mehdi" ) { echo 'Hello ' . $name . '<br>'; } //If with one statement and without { } $n = 29; if ( in_array( $n, $selected_numbers ) ) echo $n . ' is in favNumbers<br>'; //Sample of if with several conditions if ( $name == "Mehdi" && $age == 37 ) { echo 'Your name is ' . $name . ' and you are ' . $age . ' old.<br>'; } //Sample of if with several statements in a scope if ( $name == 'Mehdi' && $isMarried == false ) { echo 'Your name is ' . $name . '<br>'; echo 'You are not married now'; echo '<br>'; } //Sample of if with or condition if ( $isMarried == true || in_array( 50, $selected_numbers ) ) { echo 'This condition is true. <br>'; } /** The return will be: Hello Mehdi ۲۹ is in favNumbers Your name is Mehdi and you are 37 old. Your name is Mehdi You are not married now This condition is true. */
بخش ۳ : شرط ها در PHP با روش alternative syntax
زبان php از نوع قدیم تری از syntax برای دستور شرطی if استفاده می کرده است. این روش خصوصا در بین کدهای html باعث خوانایی بیشتر در کدها می شده است.
از alternative syntax یا روش جایگزین دستور شرطی if نیز می توان برای نوشتن شرط if استفاده کرد. در این روش نیازی به گذاشتن علامت باز و بسته curly brackets نمی باشد. به جای آن در انتهای دستورات از کلمه کلیدی endif استفاده می شود.
در نظر داشته باشید که پس از پرانتز از علامت : برای بیان دستورات استفاده خواهد شد.
در صورت درست بودن شرط در داخل پرانتز if ، کلیه دستورات در بین if و endif اجرا خواهد شد. این روش جایگزین شرط ها در PHP می باشد. مثال زیر یک نمونه ساده به همراه خروجی آن می باشد:
//Sample of if with another syntax that is called "alternative syntax" if ( $name == "Mehdi" && $age == 37 ): echo 'Your name is ' . $name . ' and you are ' . $age . ' old.<br>'; echo '<br>'; endif; /** The return will be: Your name is Mehdi and you are 37 old. */
بخش ۴ : دستور شرطی else در PHP
یکی دیگر از دستورات پر کاربرد شرط ها در PHP ، دستور if / else در PHP می باشد. در صورتی که بخواهیم یک شرط در صورت درست بودن، یک سری دستورات و در صورت نادرست بودن، یک سری دستورات دیگر را اجرا نماید، از این دستورات شرطی استفاده می کنیم.
در زیر یک مثال ساده برای درک بهتر دستور شرطی if else در پی اچ پی، زده شده است. در انتهای کدها هم، می توانید نتیجه خروجی آن را نیز مشاهده فرمایید:
//Sample of if/else block in php if ( $sex == "male" || $age > 40 ) { echo "Hey " . $name . " You are older than 40 or you are a man!<br>"; } else { echo "Hey " . $name . " You are less thant 40 and maybe you are a woman!<br>"; } // Sample of if/else block with another syntax if ( $sex == "male" || $age > 40 ) : echo "Hey " . $name . " You are older than 40 or you are a man!<br>"; else : echo "Hey " . $name . " You are less thant 40 and maybe you are a woman!<hr>"; endif; /** The result will be: Hey Mehdi You are older than 40 or you are a man! Hey Mehdi You are older than 40 or you are a man! */
بخش ۵ : کار با دستورات شرطی elseif و if و else در PHP
گاهی اوقات ممکن است نیاز داشته باشیم که چندین شرط مختلف را بر روی یک عبارت تست کنیم. در این صورت نیاز داریم که چندین بار دستور if را در برنامه خود تکرار کنیم.
برای جلوگیری از این تکرار کد در برنامه، ساختاری به نام دستور elseif در PHP معرفی شده است.
نکته مهم در استفاده از روش قدیمی یا alternative syntax برای شرط ها در PHP
در نظر داشته باشید که نمی توانید از هر ۲ روش قدیم و جدید برای یک بلاک شرطی استفاده کنید. این یعنی نمی توانید روش معمولی دستور if/elseif/else و alternative syntax را باهم مخلوط کنید.
اگر در ابتدا از curly bracket ها استفاده کردید، باید تا آخر از آن ها استفاده کنید. همین طور اگر از روش جایگزین با استفاده از : شروع کردید، تا انتها باید آن را ادامه دهید.
مخلوط کردن این روش ها در یک بلوک شرطی، باعث بروز syntax error در اجرای برنامه شما خواهد شد.
در زیر یک مثال بسیار ساده برای درک بهتر ساختار شرطی if – elseif – else در پی اچ پی، زده شده است. در انتهای کدها هم، می توانید نتیجه خروجی آن را نیز مشاهده فرمایید:
//Sample of if/elseif/else blocks in php if ( $age > 60 ) { echo "Hey " . $name . " You are older than 60 years old <br>"; } elseif ( $age > 40 ) { echo "Hey " . $name . " Your age is between 40 and 60 <br>"; } elseif ( $age > 20 ) { echo "Hey " . $name . " Your age is between 20 and 40 <br>"; } else { echo "Hey " . $name . " You are younger than 20 years old <br>"; } //Sample of if/elseif/else block with another syntax if ( $age > 60 ) : echo "Hey " . $name . " You are older than 60 years old <br>"; elseif ( $age > 40 ) : echo "Hey " . $name . " Your age is between 40 and 60 <br>"; elseif ( $age > 20 ) : echo "Hey " . $name . " Your age is between 20 and 40 <br>"; else : echo "Hey " . $name . " You are younger than 20 years old <br>"; endif; /** The result will be: Hey Mehdi Your age is between 20 and 40 Hey Mehdi Your age is between 20 and 40 */
بخش ۶ : دستور switch در PHP
در حالی که تعداد شرط ها زیاد باشد، شما می توانید از ساختار شرطی switch به همراه case های مختلف استفاده کنید. استفاده از دستور شرطی switch زمانی برای شما پر کاربرد خواهد بود، که بخواهید چندین شرط، عکس العملی یکسانی را از خود نشان دهند.
به جای استفاده از if / else if / else می توانیم از دستور switch به همراه case و default استفاده نماییم.
در زیر یک مثال برای درک بهتر نحوه کار دستور شرطی switch و case در پی اچ پی، زده شده است. در انتهای کدها هم، می توانید نتیجه خروجی آن را نیز مشاهده فرمایید:
$n = rand( 1, 8 ); var_dump( $n ); switch ( $n ) { case 1 : echo "Sunday"; break; case 2 : echo "Monday"; break; case 3 : echo "Tuesday"; break; case 4 : echo "Wednesday"; break; case 5 : echo "Thursday"; break; case 6 : echo "Friday"; break; case 7 : echo "Saturday"; break; default: echo "This is invalid day!"; } echo '<hr><br>'; /*Sample of using several switch*/ $msn_random_for_switch = rand( 1, 10 ); switch ( $msn_random_for_switch ) { case 1: case 2: case 3: case 4: echo 'The number is: ' . $msn_random_for_switch . '<br>'; echo 'The number is between 1 and 4'; break; default: echo 'The number is: ' . $msn_random_for_switch . '<br>'; echo 'The number is greater than 4'; } echo '<hr><br>'; /** The result can be something like this in the following: C:\xampp\htdocs\php\basics\msn05_ifElseSwitchSamples.php:93:int 3 Tuesday The number is: 5 The number is greater than 4 */
بخش ۷ : پیاده سازی دستور شرطی با Ternary Operator در PHP
برای دستورهای شرطی if / else هایی که عموما یک دستور برای اجرا شدن دارند، برای کمتر شدن تعداد خطوط کدهای برنامه، از دستور شرطی سه گانه می توان استفاده کرد.
در واقع برای کار با دستورات شرطی if – else در php می توانیم Ternary Operator را استفاده کنیم تا کدهای برنامه کوتاه تر و خلاصه تر گردند.
در این زمینه می توان به نکات زیر اشاره کرد:
در زیر یک چندین مثال برای درک بهتر پیاده سازی دستورات شرطی تک خطی با استفاده از عملگر ternary ، زده شده است. در انتهای کدها هم، می توانید نتیجه خروجی آن را نیز مشاهده فرمایید:
/*Sample of ternary without statement for true condition*/ //if you send a variable, it will check that is it empty or not? $msn_random_number = rand( 4, 5 ); var_dump( $msn_random_number ); echo $msn_random_number == 4 ?: 'This is 5'; define('MSN_CONST_3',21); defined( 'MSN_CONST' ) ?: define( 'MSN_CONST', 20 ); var_dump( MSN_CONST ); defined( 'MSN_CONST_2' ) || define( 'MSN_CONST_2', 25 ); var_dump( MSN_CONST_2 ); ! defined( 'MSN_CONST_3' ) && define( 'MSN_CONST_3', 40 ); var_dump( MSN_CONST_3 ); echo '<br>'; /** The result can be something like this: C:\xampp\htdocs\php\basics\msn05_ifElseSwitchSamples.php:143:int 5 This is 5 C:\xampp\htdocs\php\basics\msn05_ifElseSwitchSamples.php:148:int 21 C:\xampp\htdocs\php\basics\msn05_ifElseSwitchSamples.php:151:int 25 C:\xampp\htdocs\php\basics\msn05_ifElseSwitchSamples.php:154:int 40 */
نتیجه گیری برای آموزش انواع دستورات شرطی PHP
در این سری از آموزش های PHP ، با انواع دستور های شرطی در PHP آشنا شدیم. در ابتدا با دستور if در PHP آشنا شدیم و نحوه اجرا آن در PHP را بررسی کردیم.
ساختار نوشتن دستورات شرطی if else در PHP را مورد بررسی قرار دادیم. همچنین در هر قسمت بیان کردیم که برای اجرای چندین شرط چگونه باید از عملگرهای منطقی در دستور های شرطی استفاده نماییم.
در ادامه از روش قدیمی نوشتن دستورات if که به alternative syntax شناخته می شوند، توضیحاتی ارائه دادیم. در ادامه به ساختار elseif پرداختیم و چندین مثال در این زمینه بیان کردیم.
سپس در مورد دستور شرطی switch و همین طور نحوه کار case و استفاده از default صحبت کردیم. همچنین با نقش break در دستور شرطی switch آشنا شدیم.
در انتها نیز نحوه پیاده سازی شرط ها با استفاده از دستور شرطی سه گانه یا ternary operator تشریح کردیم.
ممکن است شما با موارد بیشتری در این حوزه آشنا باشید، که ما فراموش کرده ایم تا آن ها را در این مقاله قرار دهیم.
اگر شما از این موارد آگاه هستید، حتما در بخش نظرات عنوان کنید تا آن را به مقاله « انواع شرط ها در PHP » اضافه کنیم. در ضمن اگر این مقاله را مفید دیدید، حتما آن را به دوستان خود معرفی کرده یا در شبکه های اجتماعی به اشتراک بگذارید.
راهنما برای مطالعه بیشتر:
برای تولید مقاله انواع عملگرها در PHP ، از لینک های زیر استفاده شده است که برای مطالعه بیشتر، می توانید به آن ها مراجعه کنید:
راهنما برای خواندن سایر مقالات سایت به صورت دسته بندی شده:
شما می توانید از طریق لینک های کاربردی زیر به سایر مقالات سایت که کاملا بصورت طبقه بندی شده وجود دارد، مراجعه نموده و از آن ها استفاده کنید:
سلام وقت بخیر. من یه سایت دارم . بعد واسه صفحه محصول تکی با php کد نوشتم که مثلا رنگ این محصول زرده که اینطوریه. رنگ : زرد . الان یه مشکلی دارم.
وقتی تو وردپرس رنگشو وارد نمیکنم ،بازم نشون میده ولی اینطوریه. رنگ :
میخوام کاری کنم که نشون نده اگه فیلد رنگو پر نکرده بودم… میشه کمک کنید ؟ کد پی اچ پی هم که زدم اینه :
add_action(‘woocommerce_before_add_to_cart_form’ , ‘color’);
function color () {
echo ‘ ‘;
echo ‘رنگ : ‘ .”;
echo ”;
$color = get_post_meta (get_the_id(), ‘color’,true) . ‘ ‘ ;
if(!empty ($color)) {
echo $color ;
}
}
سلام به شما دوست عزیز
شما در همه حال، در حال echo کردن عبارت ‘رنگ: ‘ هستید. برای اینکه همیشه این نمایش داده نشه، می تونید کلیه این بخش رو، بذارید در همون if که دارید چک می کنید که empty هست یا نه، یعنی کلا عبارت هایی که echo میشه رو، بذارید داخل شرط تون
سلامی دوباره و وقت بخیر.
منظور شما به این حالت است ؟
function color () {
$color = get_post_meta (get_the_id(), ‘color’,true) . ‘ ‘ ;
if(!empty ($color)) {
echo ‘ ‘;
echo ‘رنگ : ‘ .”;
echo ”;
echo $color ;
}
}
اگه اره باز هم نشون میده برای محصولاتی که رنگو انتخاب نکردم.
دوست عزیز
متاسفانه در شرط به درستی چک نمی کنید. می تونید با گرفتن یه var_dump از خروجی get_post_meta، خودتون متوجه اشتباه تون بشوید.
ضمن اینکه اگر چیزی برای پست شما، ست نشده باشه، تابع get_post_meta ، یک رشته خالی رو بر می گردونه، بنابراین برای شرط، حتما باید این مورد رو هم، چک بفرمایید.
ضمنا در مورد استفاده از تابع get_post_meta ، کامنت هایی که در توضیحات این لینک موجود هست رو، مطالعه بفرمایید تا بهتر بتونید نحوه کار اون رو درک کنید.
سپاس از شما
سلام
بسیار سپاسگذارم از این که من راهنمایی کردید.
سلام
خواهش می کنم. انجام وظیفه بوده. ارادتمندم
سلام
وقت بخیر
یک سوال داشتم خدمت شما
من یک سری لینک دارم که به صورت عادی رایگان و دارای محدودیت هستند و با استفاده از api من لینک مستقیم میشه.میخوام با استفاده از کدهای php یک شرط برای آن برقرار کنم اگر لینک از طرف دامنه من ارسال شد لینک مستقیم تولید بشه و کاربر بتواند دانلود خودش انجام بده در غیر این صورت ریدایرکت بشه به صفحه مورد نظر من.
کلید های لینک ها به فایل php ارسال میشوند و بر اساس Api من چک میشن اگر کلید فایل ها درست بود لینک مستقیم تولید میشه.
مثال:
sub.domain.com/api.php?id=sk4o3heju5lk
ممنون میشم این مورد یک توضیح کوتاه بدید.
سلام به شما دوست عزیز
متاسفانه دقیقا متوجه سناریو شما نشدم. این طور که فهمیدم، کاربر در سایت شما، می تواند با استفاده از آدرس sub.domain.com/api.php?id=sk4o3heju5lk به لینک های شما دسترسی داشته باشد.
حال می خواهید این آدرس، فقط زمانی که درخواست از روی سایت شما ارسال شد، توسط کاربر قابل دسترس باشد.
راه حل های زیادی هست که می تونید استفاده کنید:
یکی اینکه کاربر موظف به لاگین کردن در سیستم شما باشه (مثلا با استفاده از JWT عملا لینک ها فقط در اختیار کسی که لاگین کرده قرار خواهد گرفت)
اگر مثلا سایت وردپرس هست، می تونید از چیزی مثل nonce استفاده کنید که در هنگام درخواست، به سمت سرور شما فرستاده میشه.
راه دیگه ست کردن کوکی و چک کردن اون هست (هر بار که کاربر درخواست را می فرستد، می تونید این مورد رو چک کنید و اگه کوکی ست شده بوده، اجازه دانلود بدهید)
راه دیگه، اضافه کردن یه پارمتر دیگه به کوئری استرینگ تون هست و گذاشتن زمان و همین طور دامنه برای چک کردن اون
امیدوارم بتونید با یکی از این موارد مشکل خودتون رو حل کنید
سپاسگزارم