آشنایی با دستور شرطی if else در php

تاریخ: 15 دی 1399

دستور شرطی if یکی از دستورات پرکاربرد زبان برنامه نویسی php می باشد.

زمانی که لازم باشد یک یا چند دستور تحت یک شرط مشخص اجرا شوند، از دستور if-else استفاده می کنیم.

این دستور می تواند به سه شکل مورد استفاده قرار گیرد:

  1. دستور if
  2. دستور if-else
  3. دستور if-elseif-else

دستور شرطی if

زمانی که بخواهیم یک یا چند دستور را تحت یک شرط خاص اجرا کنیم، از دستور if استفاده می کنیم.

دستور if یک شرط درون خودش می گیرد که اگر این شرط درست بود، دستورات ما اجرا می شوند و اگر غلط بود دستورات ما اجرا نمی شوند:


$x = 2;

if( $x > 3 )
{
    echo 'Hello World'; //output: empty
}

if( $x != 3 )
{
    echo 'Mohammad Yousefi'; //output: Mohammad Yousefi
}

 

اگر دستور مورد نظر ما برای شرط if فقط یک خط بود، می توانیم آکولاد را نیاوریم:


$x = 2;

if( $x != 3 )
    echo 'Mohammad Yousefi'; //output: Mohammad Yousefi

if( $x!=3 ) echo 'Mohammad Yousefi'; //output: Mohammad Yousefi

 

همانطور که در مطلب آشنایی با عملگرها در php داشتیم، می توانیم از عملگر : ? هم تحت شرایط خاص استفاده نماییم:


$x = 2;

if( $x != 3 ) echo 'Mohammad Yousefi'; //output: Mohammad Yousefi

($x == 3) ?: print 'Mohammad Yousefi'; //output: Mohammad Yousefi

 

می توانیم به جای استفاده از { } برای محصور کردن دستورات if از حالت جایگزین if endif استفاده کنیم. در این ساختار آکولاد باز به : و آکولاد بسته به endif; تبدیل می شود (clone syntax):


$x = 2;

if($x == 2):
    echo 'Mohammad Yousefi';
endif;

 

دستور شرطی if-else

این دستور به ما این امکان را می دهد که اگر شرط if غلط بود، بتوانیم دستورات دیگری را اجرا نماییم:


$x = 2;

if( $x > 2 )
{
    echo 'True Condition'; //output: empty
}
else
{
    echo 'False Condition'; //output: False Condition
}

 

اگر دستورات ما یک خطی باشند، می توانیم آکولاد را قرار ندهیم:


$x = 2;

if( $x > 2 )
    echo 'True Condition'; //output: empty
else
    echo 'False Condition'; //output: False Condition

 

همچنین می توانیم از دستور جایگزین if else یعنی if endif به صورت زیر استفاده کنیم:


$x = 2;

if( $x > 2 ) :
    echo 'True Condition'; //output: empty
else:
    echo 'False Condition'; //output: False Condition
endif;

دستور شرطی if-elseif-else

این دستور به ما این امکان را می دهد که هر تعداد شرط نیاز داشته باشیم قابل اعمال باشد. بدین صورت که اگر شرط اول در if درست بود، دستورات بلاک if اجرا شود، اگر غلط بود، شرط elseif چک شود، اگر درست بود دستورات بلاک elseif اجرا شود و همینطور تا آخر و در نهایت اگر هیچ شرطی درست نبود، دستورات بلاک else اجرا شود: (قراردادن else ضروری نیست)


$x = 2;

if( $x > 2 )
{
    echo 'if'; //output: empty
}
elseif( $x < 3 )
{
    echo 'elseif'; //output: elseif
}
else
{
    echo 'else'; //output: empty
}

 

همین دستور زمانی که هیچ شرطی درست نباشد:


$x = 2;

if( $x > 2 )
{
    echo 'if'; //output: empty
}
elseif( $x < 2 )
{
    echo 'elseif'; //output: empty
}
else
{
    echo 'else'; //output: else
}

 

چون دستورات بالا تک خطی هستند، پس می توانیم آکولادها را حذف کنیم:


$x = 2;

if( $x > 2 )
    echo 'if'; //output: empty
elseif( $x < 2 )
    echo 'elseif'; //output: empty
else
    echo 'else'; //output: else

 

همچنین می توانیم از دستور جایگزی if endif نیز استفاده کنیم:


if( $x > 2 ):
    echo 'if'; //output: empty
elseif( $x < 2 ):
    echo 'elseif'; //output: empty
endif;

 

دستورات if تو در تو و ریفکتور آنها

ممکن است بخواهیم در بلاک دستور if، از یک دستور شرطی دیگر if هم استفاده کنیم. php این امکان را می دهد که بتوانیم بی نهایت شرط های تو در تو داشته باشیم، فقط باید دقت کنیم که دستورات ما تمیز باشند و تا جایی که می توانیم ساده تر بنویسیم:


$x = 2;

if( $x > 1 ):
    if( $x == 2 ):
        if( $x < 3 ):
            echo 'Mohammad Yousefi'; //output: Mohammad Yousefi
        endif;
    endif;
endif;

 

کد بالا به صورت زیر ریفکتور و تمیز می شود: (اگر else موجود باشد این ریفکتور صحیح نیست)


$x = 2;

if( $x > 1 && $x == 2 && $x < 3 ):
    echo 'Mohammad Yousefi'; //output: Mohammad Yousefi
endif;

 

خارج کردن دستورات طولانی if (تکنیک early return)

گاهی اوقات مشابه کد زیر، دستورات زیادی را در if قرار می دهیم. طوری که کل تابع را در بر می گیرد. (فرض می کنیم دستور دیگری پس از بلاک if موجود نباشد) :


$x = 2;

if( $x > 1 ):
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
    echo 'Mohammad Yousefi';
endif;

 

می توانستیم ابتدای این دستور، مخالف شرط if را تست کنیم و اگر درست بود، return کنیم. ری فکتور به صورت زیر خواهد بود و مشاهده می کنیم که indent کدها (فاصله از چپ) حذف می شود:


$x = 2;

if( $x <= 1 ) return false;

echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';
echo 'Mohammad Yousefi';

 

تعریف تابع از شرط های طولانی

گاهی اوقات شرط های ما بسیار طولانی می شوند و خواندن آن ها سخت می شود.

در این مواقع بهتر است کل شرط ها را به صورت یک تابع تعریف کنیم:

$x = 2;
//method1
if( $x == 2 || $x < 1 || $x > 3 || $x !== '' ) {
    echo 'Biawp.ir';
}//output: Biawp.ir

//method2
function xValue() {
    global $x;
    return $x == 2 || $x < 1 || $x > 3 || $x !== '';
}
if( xValue() ) {
echo 'Biawp.ir';
}//output: Biawp.ir

 

 

آموزش بعدی >> آشنایی با دستور while و do-while در php

دیدگاهتان را بنویسید

طراحی افزونه وردپرس