عملگر شرطی در مثال php. اگر و شرایط دیگر

مانند سایر زبان های برنامه نویسی، PHP دارای دستورات انتخاب است. در کل سه نوع وجود دارد:

  • عبارت شرطی if...else ;
  • سوئیچ سوئیچ ;
  • عملیات مشروط (?)؛

شایان ذکر است که PHP دارای برچسب goto بدون قید و شرط نیست، اما با وجود این، کلمه کلیدیبرای goto رزرو شده است.

در این درس به دستور if...else و عملیات شرطی نگاه می کنیم و درس بعدی سوئیچ سوئیچ را پوشش می دهد.

نحو if...else مانند C است:

//اگر uslovie درست باشد، به اینجا می رسیمعملگر 1; //در مورد یک اپراتور،عملگر 2; ...) دیگر {// اختیاری//اگر uslovie نادرست است، به اینجا می رویم //در مورد یک اپراتور،عملگر 3; عملگر4; ... } ?>

//بریس های فرفری اختیاری هستند

  • یادداشت ها:
  • else جزء الزامی نیست، اما بیشتر مورد استفاده قرار می گیرد زیرا منطق این را ایجاب می کند.

همانطور که در نظرات کد ذکر شد، اگر فقط یک عبارت داشته باشیم، بریس های فرفری () ضروری نیستند. از آنجایی که شرط می تواند درست (1) یا نادرست (0) باشد، هر یک از اپراتورهای 1، عملگر2 و غیره، یا operator3، operator4 و غیره اجرا می شوند. بدهیممثال ملموس

در PHP://تنظیم مقادیر متغیر $num1 = 10; $num2 = 7; اگر ($num1 > $num2) (//شرط درست است، یعنی به اینجا رسیدیم
echo "شرط درست است زیرا 10 > 7 "; $num1+=$num2;// متغیر $num2 را به $num1 اضافه کنید. echo "\$num1 =". $num1;// نتیجه 17 خواهد بود ) else echo "از آنجایی که شرایط مثبت است، ما به اینجا نمی رسیم"; ?>

// فقط یک عبارت دیگر وجود دارد، بنابراین هیچ بریس فرفری وجود ندارد

در اینجا یک مثال آورده شده است که در آن عبارت else حذف شده است و شرط شامل دو شرط است: 6) اکو "شرایط درست است"؛ //یک مثال دیگر: اگر ($num1 == 10 || $num2 >= 100) echo "شرایط درست هستند" را بازتاب دهد. ?>

//در همه موارد شرایط درست است

تودرتو اگر شرایط

همانطور که در زبان C، PHP اجازه استفاده از شرایط تودرتو را می دهد://اگر uslovie1 و uslovie2 درست باشند، به اینجا می رسیم ) دیگر (//اگر uslovie1 و uslovie2 درست باشند، به اینجا می رسیم //اگر uslovie1 درست و uslovie2 نادرست باشد، به اینجا می رسیم } ?>

شما می توانید به تعداد دلخواه خود در داخل آن بنویسید، اما چنین ساختارهایی بسیار پیچیده هستند، بنابراین درک آنها هنگام اشکال زدایی یک برنامه بسیار دشوار خواهد بود. در اینجا یک مثال با عبارات if تودرتو آمده است:

// نتیجه این اسکریپت یک پیام خواهد بود: // $flag1 درست است و $flag2 نادرست است ?>

شرایط تودرتو با استفاده از if...elseif...else

PHP این توانایی را دارد که عبارات شرطی را با استفاده از طرح: if...elseif...else . این بسیار راحت‌تر از ایجاد مجموعه‌ای از شرایط اولیه، و سپس افزودن مجموعه‌ای از شرایط دیگر به آنها است. نحو ساختار if...elseif...else به صورت زیر است:

در چنین ساختی، else را فقط می توان یک بار نوشت، اما elseif را می توان هر چند بار که دوست دارید نوشت. همچنین اعتقاد بر این است که طراحی فوق ضعیف است سوئیچ سوئیچ.

با استفاده از عملگر endif

تقریباً هر موتور ایجاد شده در PHP از عملگر endif استفاده می کند. طراحی این اپراتوردر زیر آورده شده است:

... برچسب ها و مطالب html. ... ... برچسب ها و مطالب html. ...

ارزش این را دارد که به راحتی این طراحی توجه کنیم تا اینکه تمام محتوا را از طریق اکو خروجی بگیریم. گذاشتن کولون بعد از این شرایط را فراموش نکنید!

استفاده از عملگرهای شرطی (؟)

استفاده از عملگرهای شرطی نه تنها در PHP، بلکه در سایر زبان های مشابه یک رویکرد رایج نیست، اما نباید آنها را فراموش کرد. سینتکس عملیات شرطی به شرح زیر است:

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

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

اپراتور مشروطبه شما این امکان را می دهد که بسته به نتیجه محاسبه عبارت - شرط، یک بلوک کد مشخص را رد یا اجرا کنید. می توان گفت که یک دستور شرطی نقطه تصمیم گیری در یک برنامه است. اگر تصور کنید که یک برنامه یک جاده است و مفسر PHP مسافری است که در امتداد آن راه می‌رود، می‌توان عبارات شرطی را به‌عنوان چهارراهی در نظر گرفت که کد برنامه به دو یا چند جاده منشعب می‌شود و در چنین تقاطع‌هایی مترجم باید انتخاب کند که کدام یک راه بعدی

اگر بیانیه

دستور if ساده ترین دستور شاخه است.

نحو دستور if به صورت زیر است:

دستور if ابتدا عبارت شرطی مشخص شده در پرانتز را ارزیابی می کند که نتیجه آن یک مقدار بولی است. اگر نتیجه به دست آمده درست باشد، دستورالعمل اجرا می شود. اگر عبارت false را برگرداند، دستورالعمل اجرا نمی شود. یک عبارت با هر پیچیدگی می تواند به عنوان یک شرط استفاده شود.

اگر بدنه دستور if فقط از یک دستورالعمل استفاده می کند، محصور کردن آن در پرانتزهای فرفری امکان پذیر است، اما لازم نیست. با این حال، اگر شما نیاز به اجرای بیش از یک دستور در بدنه یک دستور if دارید، آنگاه این چندین دستورالعمل باید در پرانتزهای فرفری محصور شوند. لطفاً توجه داشته باشید که بعد از بسته شدن بریس فرفری نباید نقطه ویرگول وجود داشته باشد.

کد زیر استفاده از دستور if را نشان می دهد:

اگر دستورات را می توان در داخل دستورات if دیگر تودرتو کرد:

به مثال آخر توجه کنید: اگر دستور از نظر اندازه بزرگ نباشد، دستور لازم نیست دقیقاً زیر دستور if نوشته شود.

اگر غیر از بیانیه

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

نحو دستور if else این است:

عبارت else اختیاری است. بلوک دستورالعمل ها که بعد از else قرار دارد به طور پیش فرض اجرا می شود، یعنی. وقتی عبارت شرطی in if false را برمی گرداند. دستور else را نمی توان جدا از دستور if استفاده کرد. بلوک else فقط باید بعد از دستور if ظاهر شود.

با کمی اصلاح مثال قبلی، می‌توانیم ببینیم که اگر شرط false را برگرداند، دستور if else چگونه کار می‌کند:

عبارت if else را می توان تودرتو کرد. چنین عبارات شرطی تودرتو اغلب در عمل رخ می دهد. اگر دستور if داخل بلوک if یا else تو در تو باشد. اگر کد شما از چند دستور if در یک ردیف استفاده می کند، else همیشه به نزدیکترین اشاره دارد اگر:

مورد آخر برای if($a) اعمال نمی شود زیرا در بلوک داخلی نیست، بنابراین نزدیکترین مورد به آن if($i) است. عبارت else در داخل بلوک مربوط به if($b) است زیرا این if نزدیک‌ترین مورد به آن است.

otherif/else if ساخت

دستور if/else مقدار یک عبارت شرطی را ارزیابی می کند و یک قطعه خاص از کد برنامه را اجرا می کند. اما اگر نیاز به اجرای یکی از چندین فرگمنت داشته باشید، چه؟ اگر لازم است چندین شرط را پشت سر هم بررسی کنید، اگر ساخت و ساز برای این کار مناسب است (این همان ساختار است، فقط متفاوت نوشته شده است). به طور رسمی، این یک ساختار مستقل PHP نیست - فقط یک سبک برنامه نویسی رایج است که شامل استفاده از عبارات if/else مکرر است. این اجازه می دهد تا شرایط اضافی آزمایش شود تا زمانی که true پیدا شود یا بلوک else به دست آید. otherif/else if ساختباید بعد از دستور if و در صورت وجود قبل از عبارت else ظاهر شود.

در اینجا سه ​​شرط بررسی می شود و بسته به مقدار متغیر $username، اقدامات مختلفی انجام می شود.

واقعا چیز خاصی در مورد این قطعه وجود ندارد. این فقط دنباله ای از دستورات if است، که در آن هر دستور if بخشی از عبارت else دستور if قبلی است. برای کسانی که برای اولین بار با این شکل از نشانه‌گذاری مواجه شده‌اند و واقعاً نمی‌دانند چگونه کار می‌کند، ما همان مثال را بازنویسی می‌کنیم، فقط در یک شکل نحوی معادل که به طور کامل تودرتو ساختارها را نشان می‌دهد:

لطفا AdBlock را در این سایت تعلیق کنید.

اکنون که به عبارات شرطی پرداختیم، می توانیم به موضوع اصلی درس برویم - عملگر شرطی.

الگوی بیانیه If -- else

در اینجا دو گزینه اصلی وجود دارد:

لیست 1.

// اولین گزینه if (conditional_expression) operator_1; // گزینه دوم if (conditional_expression) operator_1; other operator_2;

خوب، و عکس ها، البته. بدون عکس کجا بودیم؟

شکل 1 بلوک دیاگرام دستور if-else.

این اپراتور به این صورت عمل می کند. مقدار عبارت شرطی محاسبه می شود. اگر نتیجه درست باشد، operator_1 از شاخه اصلی اجرا می شود و اگر false باشد، یا هیچ اتفاقی نمی افتد (در گزینه اول) یا operator_2 از شاخه جانبی (در گزینه دوم) اجرا می شود.

من به شما پیشنهاد می کنم بلافاصله با مثال هایی آن را درک کنید. به عنوان مثال، به نظر شما کد زیر چه خروجی خواهد داشت؟ حدس خود را بررسی کنید

لیست 2.

#شامل int main(void) (اگر (1) printf("TRUE!\n")؛ در غیر این صورت printf("FALSE!\n")؛ بازگشت 0؛ )

خوب، بله، درست است، آن را چاپ خواهد کرد TRUE! . شرط درست است. شما فراموش نکرده اید که یکی حقیقت است، نه؟ الان یه چیز وحشتناک بهت میگم هر عدد غیر صفر درست تلقی می شود. خودتان آن را بررسی کنید.

خوب، حالا این یک مثال است. به نظر شما خروجی این برنامه چیست؟

لیست 3.

#شامل int main(void) ( if (0) printf("FALSE!\n"); 0; )

امیدوارم پاسخ صحیح را داده باشید و خط با خروجی FALSE اشتباه گرفته نشده باشید! ، که به طور خاص اضافه کردم تا شما را گیج کنم. بله، این برنامه هیچ خروجی نخواهد داشت. شرط داخل پرانتز false است، یعنی دستور اجرا نخواهد شد. همه چیز طبق قوانین است.

بیایید یک مثال دیگر برای تقویت این موضوع بیاوریم. بسیار مراقب باشید، من همه چیز را برای شما آماده کرده ام. بنابراین خروجی این کد چیست؟

لیست 4.

#شامل int main(void) (int x = 12; if (!(!(x%3 == 0) && !(x%2 == 0))) printf("kratno\n"); else printf("ne kratno\n")؛ بازگشت 0؛ )

من معتقدم که موفق شدی! اگر نتیجه نداد، ناامید نشوید - هنوز زمان برای تمرین وجود خواهد داشت.

خوب، حالا بیایید در مورد تفاوت های ظریف صحبت کنیم - طبق معمول، آنها آنجا هستند.

فقط یک دستور را می توان در هر شاخه از یک دستور شرطی نوشت.

در اینجا، به یک مثال نگاه کنید.

لیست 5.

#شامل < 0) printf("x = %d\n", x); x = (-1)*x; printf("%d\n", x); return 0; }

به نظر می رسد که برنامه باید اینگونه کار کند. کاربر یک عدد صحیح وارد می کند. اگر عدد کوچکتر از صفر است، علامت آن را به علامت مقابل تغییر دهید. وگرنه هیچ کاری نمیکنیم پس از این، عدد را روی صفحه کنسول نمایش می دهیم.

اکنون توجه خود را به صفحه نمایش معطوف کنید.


شکل 2 نتیجه لیست 11 برنامه

اما راه حلی وجود دارد! و این تصمیم است عملگر مرکب(). اگر چند عبارت را در پرانتزهای فرفری قرار دهیم، آنها به عنوان یک دستور واحد در نظر گرفته می شوند. بنابراین، برای اینکه برنامه به درستی کار کند، یک عملگر ترکیبی به آن اضافه می کنیم:

لیست 6.

#شامل int main(void) (int x = 0; scanf("%d"، &x); if (x< 0){ printf("x = %d\n", x); x = (-1)*x; } printf("%d\n", x); return 0; }

خوب، حالا همه چیز همانطور که باید باشد. خودتان آن را بررسی کنید. اتفاقا از روی تجربه. من به شما توصیه اکید می کنم که همیشه از بریس های فرفری استفاده کنید، حتی اگر فقط یک جمله در داخل آنها وجود داشته باشد. اغلب اوقات این به شما امکان می دهد از اشتباهات احمقانه جلوگیری کنید.

در داخل ساختارهای کنترل if-else، می توانید از هر ساختار زبانی، از جمله ساختار if-else دیگر استفاده کنید.

مثلاً اینطور:

لیست 7.

#شامل int main(void) (int x = 0; scanf("%d"، &x); if (x< 0) { printf("Negative!\n"); } else { if (x == 0){ printf("Zero!\n"); } else { printf("Positive!\n"); } } return 0; }

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

استفاده از تو در تو عبارات مشروطویژگی دیگری را به وجود می آورد.

else همیشه به نزدیکترین اشاره دارد در صورتی که چیز دیگری ندارد

به عنوان مثال:

لیست 8.

اگر (n > 0) اگر (a > b) z = a;

طبق قاعده ما، else به باطن (دوم) اطلاق می شود اگر . اگر بخواهیم به بیرونی (اول) if اعمال کنیم، می‌توانیم از عملگر ترکیبی استفاده کنیم.

لیست 9.

اگر (n > 0) (اگر (a > b) z = a؛ ) دیگری z = b;

همانطور که قبلاً اشاره کردم، بهتر است همیشه از بریس های فرفری استفاده کنید تا از موارد سوء تعبیر ورودی جلوگیری شود. یافتن چنین خطاهایی در برنامه ها بسیار دشوار است. به محل قرارگیری تورفتگی ها نیز توجه کنید. من از آنها استفاده می کنم تا بلافاصله از روی کد مشخص شود که کدام شاخه متعلق به کدام اگر است.

اگر ساخت

نحو ساخت و ساز اگرطراحی مشابه اگربه زبان C:

اگر ( بیان منطقی) اپراتور؛
?>

با توجه به عبارات PHP، ساخت و ساز اگرشامل یک عبارت بولی است. اگر عبارت بولی درست باشد ( درست است)، سپس اپراتور به دنبال ساخت و ساز اگراجرا خواهد شد و اگر عبارت منطقی نادرست باشد ( نادرست)، سپس مورد بعدی بعد از آن اگربیانیه اجرا نخواهد شد. در اینجا چند نمونه آورده شده است:

اگر ($a > $b) اکو "مقدار a بزرگتر از b است";
?>

در مثال زیر، اگر متغیر $aبرابر با صفر نیست، رشته "مقدار a درست است" چاپ می شود:

اگر ($a) اکو "ارزش a درست است";
?>

در مثال زیر، اگر $a null باشد، رشته "مقدار a false است" چاپ می شود:

اگر (!$a) اکو باشد "مقدار a نادرست است";
?>

اغلب به بلوکی از دستورات نیاز دارید که تحت یک معیار شرطی خاص اجرا شوند، سپس این دستورات باید در پرانتزهای فرفری قرار گیرند. {...} مثال:

اگر ($a > $b) (
پژواک "a بزرگتر از b است" ;
$b = $a ;
}
?>

مثال بالا پیام "a بزرگتر از b" را نشان می دهد $a > $bو سپس متغیر $aمعادل یک متغیر خواهد بود $b. توجه داشته باشید که این عملگرها در اجرا می شوند اگر.

اگر (بیان_بولی):
تیم ها؛
otherif(other_logical_expression):
other_commands;
دیگر:
other_commands;
endif

به محل قرارگیری کولون توجه کنید ( : )! اگر آن را رد کنید، یک پیام خطا ایجاد می شود. و یک چیز دیگر: طبق معمول، بلوک ها elseifو دیگررا می توان حذف کرد.

ساختار elseif

elseifترکیبی از طرح هاست اگرو دیگر. این ساخت و ساز ساخت مشروط را گسترش می دهد در غیر این صورت.

در اینجا سینتکس ساخت آمده است: elseif:

اگر (بیان_بولی_1)
operator_1;
elseif (بولی_بیان_2)
operator_2;
دیگر
operator_3;

مثال عملی استفاده از طرح elseif:

اگر ($a > $b) (
پژواک "a بزرگتر از b است" ;
) elseif ($a == $b ) (
پژواک "a برابر است با b" ;
) دیگر (
پژواک "a کمتر از b است" ;
}
?>

در زندگی روزمرهبسته به شرایطی اغلب لازم است نوعی تصمیم گیری شود. مثلا اگر آخر هفته هوا گرم باشد به دریا می رویم وگرنه اگر هوا ابری باشد در خانه می نشینیم.

در برنامه نویسی نیز اغلب این اتفاق می افتد. برای این وجود دارد دو عبارت شرطی if-else و switch-case هستند. در این مقاله در مورد عملگر if-else و در مقاله بعدی در مورد سوئیچ کیس به شما خواهم گفت.

نحو دستور شرطی if-elseبعدی:


اگر شرط درست باشد، کد از بلوک if اجرا می شود، در غیر این صورت، اگر شرط نادرست باشد، کد بلوک else اجرا می شود.

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

پول وار = 35000; // فرض کنید 35000 یورو داریم // ماشینی که می خواهیم بخریم 50000 یورو است. و شرط زیر ایجاد می شود اگر (پول > 50000)( document.write("ما می توانیم یک ماشین بخریم"); )else( document.write("پول کافی برای خرید ماشین نیست")؛ )

سند را ذخیره می کنیم، آن را در مرورگر باز می کنیم و می بینیم که پیام زیر در صفحه ظاهر می شود: "پول کافی برای خرید ماشین وجود ندارد." اگر بیش از 50000 یورو داشتیم، کد از بلوک if اجرا می شد. اگر دقیقاً 50000 یورو داشتیم، پس نمی‌توانستیم ماشین بخریم، زیرا 50000 بیشتر از 50000 نیست، باید یک علامت بزرگتر یا مساوی بنویسیم (>=).

نظر بده عمل منطقی برابر با دو علامت مساوی (==) نوشته می شود.. همچنین یک عملیات منطقی کمتر یا مساوی با (

استفاده از بریس های فرفری

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

مثال بالا بدون استفاده به خوبی کار خواهد کرد بریس های فرفری، از آنجایی که هر دو بلوک فقط شامل یک عبارت هستند.

شما می توانید هر عملیات منطقی را در داخل if بنویسید، خواه ساده باشند یا پیچیده. همچنین می توانید از عملگرهای AND (&&) و OR (||) استفاده کنید.

نظر بده وجود بلوک else اختیاری است.

به عنوان مثال، اگر a برابر با b و c برابر با d باشد، پیام مربوطه را نمایش می دهیم، در غیر این صورت اگر بلوک دیگری وجود نداشته باشد، به سادگی به خط بعدی می رویم.

Var a = 4، b = 4، c = 8، d = 8; if((a == b) && (c == d)) document.write("a برابر است با b و c برابر است با d"); document.write ("خط بعدی کد");

عبارت If - else if - else

بعد از یک بلوک if، ممکن است یک یا چند بلوک if دیگری وجود داشته باشد و در پایان یک بلوک else وجود دارد. این زمانی مفید است که شما نیاز به استفاده از بیش از یک شرط دارید.


برای درک بهتر، مثالی از زندگی روزمره می زنیم. مثلا ما تعداد مشخصی سوکت داریم. اگر فقط یک سوکت در اتاق داشته باشیم، می توانیم فقط یک دستگاه را وصل کنیم، اگر دو سوکت وجود داشته باشد، می توانیم دو دستگاه و اگر بیشتر باشد، می توانیم به شبکه برق، همه دستگاه ها از خانه.

حالا بریم سراغ برنامه نویسی.

سوکت Var = 2; // تعداد پریزهای خانه if(سوکت == 1)  document.write("

ما فقط می توانیم یک دستگاه را وصل کنیم

")؛ else if(socket == 2)( document.write("

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

"); document.write("

مثلا تلویزیون و لپ تاپ

"); )else( document.write("

ما می توانیم همه دستگاه ها را از خانه به شبکه برق وصل کنیم

"); }

بسته به مقدار متغیر سوکت، یک یا آن بلوک کد کار خواهد کرد. همانطور که احتمالا قبلاً متوجه شده اید، اگر سوکت برابر با 1 باشد، اولین بلوک کد کار خواهد کرد. اگر سوکت برابر با 2 باشد، بلوک دوم کد کار خواهد کرد و اگر سوکت مقدار دیگری (حتی یک عدد منفی) داشته باشد، بلوک سوم کد کار خواهد کرد.

اختصار برای if other

نماد کوتاه زمانی می تواند مورد استفاده قرار گیرد که بسته به شرایط خاصی، یک متغیر بتواند مقداری را دریافت کند.


به عنوان مثال، اگر مقدار متغیر a بزرگتر از مقدار متغیر b باشد، در متغیر x پیام زیر را می نویسیم: "متغیر a بزرگتر از متغیر b است" در غیر این صورت می نویسیم که "متغیر a است. کمتر از متغیر b.

Var a = 50، b = 100، x; x = (a > b) ? "

متغیر a بیشترمتغیر ب

" : "

متغیر a کمترمتغیر ب

"; //خروجی نتیجه حاصل document.write(x);

این تمام چیزی است که می خواستم در این مقاله به شما بگویم. دستور شرطی if-else در بیش از یک اسکریپت استفاده می شود، بنابراین دانستن و درک آن بسیار مهم است. در مقاله بعدی در مورد یکی دیگر از سوئیچ اپراتور شرطی به شما خواهم گفت.