سطح C: راه میانبر
گاهی اوقات یک دستور if...else آنقدر ساده است که نوشتن چهار خط کد برای آن زیادهروی به نظر میرسد. در این سطح، با یک عملگر بسیار زیبا و کاربردی آشنا میشویم که به ما اجازه میدهد این نوع شرطهای ساده را در یک خط بنویسیم.
محتوای آموزشی
عملگر سهتایی (Ternary Operator)
این عملگر تنها عملگر در PHP است که سه عملوند میگیرد و یک راه بسیار کوتاه برای نوشتن دستورات if...else ساده است. ساختار آن به شکل زیر است:
$variable = (شرط) ? مقدار_اگر_درست_بود : مقدار_اگر_غلط_بود;
- شرط: ابتدا شرط داخل پرانتز ارزیابی میشود.
?: اگر شرطtrueبود، مقداری که بلافاصله بعد از علامت سوال?آمده، برگردانده میشود.:: اگر شرطfalseبود، مقداری که بعد از دو نقطه:آمده، برگردانده میشود.
نتیجهی نهایی این عبارت در متغیر $variable ذخیره میشود. این عملگر کد را بسیار تمیز و خوانا میکند، به خصوص زمانی که میخواهید بر اساس یک شرط، مقداری را به یک متغیر اختصاص دهید.
کارگاه عملی: تعیین پیام برای سبد خرید
در این مثال، بر اساس اینکه سبد خرید کاربر خالی است یا نه، یک پیام مناسب را با استفاده از عملگر سهتایی در یک متغیر ذخیره کرده و سپس آن را نمایش میدهیم.
<?php
$item_count_in_cart = 5; // تعداد آیتمها را به 0 تغییر دهید و نتیجه را ببینید
echo "تعداد محصولات در سبد خرید شما: " . $item_count_in_cart;
echo "<hr>";
// استفاده از عملگر سهتایی برای تعیین پیام
$cart_message = ($item_count_in_cart > 0)
? 'سبد خرید شما آماده پرداخت است.'
: 'سبد خرید شما خالی است!';
echo "<strong>وضعیت سبد خرید:</strong> " . $cart_message;
// مثال دیگر: تعیین کلاس CSS برای رنگ
$error_count = 0;
$alert_class = ($error_count == 0) ? 'alert-success' : 'alert-danger';
echo "<hr>";
// این متغیر میتواند در HTML برای استایلدهی استفاده شود
echo "کلاس CSS برای پیام: " . $alert_class;
?>
تمرین شما
صورت تمرین: بازنویسی با میانبر
برنامه "سیستم کنترل ورود" که در تمرین سطح A با if...else نوشتید را به خاطر بیاورید. حالا آن را با استفاده از عملگر سهتایی بازنویسی کنید.
یک متغیر به نام $user_age با یک مقدار دلخواه تعریف کنید. سپس با استفاده از عملگر سهتایی، بر اساس اینکه سن کاربر ۱۸ یا بیشتر است، مقدار رشتهای "بزرگسال" یا "کودک/نوجوان" را در یک متغیر جدید به نام $status ذخیره کنید. در نهایت، متغیر $status را چاپ کنید.
باشگاه ذهن: یک چالش برای هوش مصنوعی
چالش شما: عملگر سهتایی یک میانبر عالی برای if...else است. PHP یک عملگر میانبر دیگر نیز دارد که برای یک موقعیت بسیار خاص طراحی شده است: بررسی اینکه یک متغیر null است یا نه. این عملگر "Null Coalescing Operator" (??) نام دارد و کد را در این سناریوهای خاص بسیار تمیزتر میکند.
وظیفه: یک پرامپت برای هوش مصنوعی طراحی کنید و از او بخواهید:
- عملگر "Null Coalescing" (
??) در PHP را با یک مثال ساده توضیح دهد. - یک سناریوی کدنویسی رایج (مثلاً دریافت داده از یک فرم که ممکن است برخی فیلدهای آن پر نشده باشد) را مثال بزند که در آن استفاده از
??بسیار بهتر از عملگر سهتایی یا یکifطولانی است. - کد آن سناریو را یک بار با
if...else، یک بار با عملگر سهتایی، و یک بار با عملگر??بنویسد تا مقایسه و درک برتری آن در این کاربرد خاص، آسان شود.