عملگرهای منطقی در PHP برای انجام مقایسهها و تصمیمگیریهای منطقی در کد استفاده میشوند. این عملگرها معمولاً در ساختارهای کنترلی مانند شرطها if، حلقهها «While»، و سایر بخشهای تصمیمگیری کاربرد دارند. عملگرهای منطقی در PHP به برنامهنویس امکان میدهند تا چندین شرط را ترکیب کرده و بر اساس نتایج آنها تصمیمگیری کند.
مقدمه
عملگرهای منطقی در PHP برای انجام مقایسات و ترکیب چندین شرط استفاده میشوند. این عملگرها مقادیر بولی true و false را پردازش کرده و نتیجهای منطقی برمیگردانند که در تصمیمگیریهای برنامه نقش اساسی دارد. عملگرهای منطقی در PHP را میتوان به && و، || یا، ! و xor اشاره کرد. این عملگرها بر روی مقادیر بولی true و false عمل میکنند و نتیجهی آنها نیز مقدار بولی خواهد بود. استفادهی صحیح از این عملگرها باعث افزایش خوانایی و کارایی کد شده و در منطق برنامه نقش مهمی ایفا میکند.
در این آموزش، از سری مقاله های مجله پی استور، با عملگرهای منطقی OR ، AND و NOT در PHP آشنا میشوید و یاد میگیرید که چگونه از آن برای ساخت یک عبارت منطقی پیچیده استفاده کنید.
معرفی عملگر AND در PHP
عملگر منطقی AND دو مقدار ورودی دریافت میکند و در صورتی که هر دو مقدار درست (true) باشند، مقدار درست را برمیگرداند؛ در غیر این صورت، مقدار نادرست (false) را برمیگرداند. در PHP از کلمهی کلیدی and برای نمایش عملگر منطقی AND استفاده میشود.
expression1 and expression2
جدول زیر نتیجهی استفاده از عملگر AND را نشان میدهد:
از آنجایی که کلمات کلیدی در PHP به حروف بزرگ و کوچک حساس نیستند، AND و and عملکرد یکسانی دارند.
expression1 AND expression2
بر اساس قرارداد، بهتر است از عملگر and با حروف کوچک استفاده کنید. علاوه بر کلمهی کلیدی and، زبان PHP از && نیز بهعنوان عملگر منطقی AND استفاده میکند.
expression1 && expression2
عملگرهای && و and نتیجهی یکسانی برمیگردانند. تنها تفاوت آنها در اولویت اجرا است. عملگر && اولویت بالاتری نسبت به and دارد. اولویت یک عملگر مشخص میکند که PHP هنگام ارزیابی یک عبارت، کدام عملگر را زودتر پردازش کند.
مثالهایی از عملگر AND در PHP
فرض کنید میخواهید به مشتریانی که بیش از سه کالا با قیمت بالاتر از ۹۹ خریداری میکنند، تخفیف بدهید. برای بررسی اینکه آیا مشتریان واجد شرایط دریافت تخفیف هستند یا نه، میتوانی از عملگر AND به شکل زیر استفاده کنید:
<?php $price = 100; $qty = 5; $discounted = $qty > 3 && $price > 99; var_dump($discounted);
خروجی:
bool(true)
اگر مقدار qty$ را به ۲ تغییر دهید، مقدار discounted $false خواهد شد، مانند این:
<?php $price = 100; $qty = 2; $discounted = $qty > 3 && $price > 99; var_dump($discounted);
در عمل، از عملگر منطقی AND در دستورات if، if-else، if-elseif، while و do-while استفاده میشود.
اجرای عملگر منطقی AND در php
زمانی که مقدار اولین عبارت false باشد، عملگر منطقی AND متوجه میشود که نتیجه نیز false خواهد بود. در این حالت، دیگر مقدار عبارت دوم را بررسی نمیکند. به این فرآیند اجرای کوتاهشده گفته میشود.
<?php $debug = false; $debug && print('PHP and operator demo!');
نحوه کار:
- ابتدا متغیر debug$ را تعریف کنید و مقدار آن را false قرار بدهید.
- سپس از عملگر منطقی AND برای ترکیب debug$ و تابع ()print استفاده کنید. از آنجایی که مقدار debug $false است، PHP دیگر تابع ()print را اجرا نمیکند.
- اگر مقدار debug$ را به true تغییر دهید، یک پیام در خروجی نمایش داده میشود.
<?php $debug = true; $debug && print('PHP and operator demo!');
خروجی:
PHP and operator demo!
معرفی عملگر OR در PHP
عملگر منطقی OR دو مقدار ورودی دریافت میکند و اگر حداقل یکی از آنها true باشد، مقدار true را برمیگرداند؛ در غیر این صورت، مقدار false را برمیگرداند. به عبارت دیگر، عملگر منطقی OR فقط در صورتی false میشود که هر دو مقدار false باشند. در PHP برای نمایش عملگر منطقی OR میتوان از کلمهی کلیدی or یا علامت || بهصورت زیر استفاده کرد:
expression1 or expression2
یا
expression1 || expression2
جدول زیر نتیجهی استفاده از عملگر OR را نشان میدهد:
توجه داشته باشید که or، Or و OR یکسان هستند، زیرا کلمات کلیدی در PHP به حروف بزرگ و کوچک حساس نیستند.
عملگرهای || و or نتیجهی یکسانی برمیگردانند. تنها تفاوت آنها در اولویت اجرا است. عملگر or اولویت پایینتری نسبت به || دارد.
مثالهایی از عملگر OR در PHP
فرض کن که باید کش «Cache» وبسایت را پاک کنید اگر متغیر expired$ یا purge$ مقدار true داشته باشند. برای انجام این کار، میتوانید از عملگر منطقی OR به شکل زیر استفاده کنید:
<?php $expired = true; $purged = false; $clear_cache = $expired || $purged; var_dump($clear_cache);
خروجی:
bool(true)
از آنجایی که مقدار expired $true است، نتیجهی عملگر OR نیز true خواهد بود. با این حال، اگر مقدار expired$ را به false تغییر دهید، نتیجه false خواهد شد، همانطور که در مثال زیر نشان داده شده است:
<?php $expired = false; $purged = false; $clear_cache = $expired || $purged; var_dump($clear_cache);
در عمل، از عملگر منطقی OR معمولاً در دستورات if، if-else، if-elseif، while و do-while استفاده میشود.
اجرای عملگر منطقی OR در php
اگر مقدار اولین عبارت true باشد، عملگر منطقی OR متوجه میشود که نتیجه قطعاً true خواهد بود. در این حالت، دیگر مقدار عبارت دوم را بررسی نمیکند. این فرآیند را اجرای کوتاهشده مینامند. در عمل، معمولاً از عملگر or در الگوی زیر استفاده میشود:
function_call() || die(message)
()function_call مقدار true را برگرداند، یعنی عملیات موفق بوده است و PHP هرگز عبارت دوم را که شامل فراخوانی ()die است، اجرا نمیکند. اما اگر ()function_call مقدار false برگرداند، PHP تابع ()die را اجرا کرده و پیام خطا نمایش داده میشود.
مثال:
<?php function connect_to_db() { return false; } connect_to_db() || die('Cannot connect to the database.');
خروجی:
Cannot connect to the database
در این مثال، اگر تابع ()connect_to_db مقدار false برگرداند، PHP تابع ()die را اجرا کرده و پیام خطا نمایش داده میشود.
<?php $result = false or true; var_dump($result);
خروجی:
bool(false)
در این مثال، انتظار دارید که مقدار result$ برابر با true باشد، زیرا false OR true مقدار true برمیگرداند. اما این اتفاق نمیافتد.
$result = false or true;
PHP ابتدا result = false$ را ارزیابی میکند و سپس عملگر or را بررسی میکند، زیرا عملگر = اولویت بالاتری نسبت به or دارد. توجه داشته باشید که هر عملگر در PHP دارای یک سطح اولویت است. PHP ابتدا عملگرهایی را که اولویت بالاتری دارند پردازش میکند و سپس به سراغ عملگرهای با اولویت پایینتر میرود. از نظر فنی، این عبارت معادل حالت زیر است:
($result = false) or true;
بنابراین، مقدار false به result$ اختصاص داده میشود. برای رفع این مشکل، باید از پرانتز استفاده کنید تا ترتیب ارزیابی را تغییر دهید:
<?php $result = (false or true); var_dump($result);
خروجی:
bool(true)
یا میتوانید از عملگر || استفاده کنید:
<?php $result = false || true; var_dump($result);
خروجی:
bool(true)
بنابراین، بهتر است همیشه به جای عملگر or از || استفاده کنید.
معرفی عملگر NOT در PHP
برخلاف عملگرهای منطقی AND و OR که دو مقدار ورودی دریافت میکنند، عملگر NOT فقط یک مقدار را میپذیرد و آن را وارونه میکند. به عبارت دیگر، عملگر NOT مقدار true را به false و مقدار false را به true تبدیل میکند.در PHP برای نمایش عملگر NOT میتوان از کلمهی کلیدی not یا علامت ! استفاده کرد.
not expression
یا
! expression
جدول زیر نتیجهی استفاده از عملگر منطقی NOT را نشان میدهد:
عملگر NOT همچنین با نام عملگر نقیض منطقی شناخته میشود.
مثالهایی از عملگر NOT در PHP
مثال زیر نشان میدهد که چگونه میتوان از عملگر منطقی ! استفاده کرد:
<?php $priority = 5; var_dump( ! $priority < 5 );
خروجی:
bool(true)
نتیجه گیری
به طور کلی، عملگرهای منطقی در PHP ابزاری قدرتمند برای ترکیب شرطها و کنترل جریان اجرای برنامه هستند. این عملگرها به برنامهنویسان امکان میدهند تا چندین شرط را به صورت همزمان بررسی کرده و تصمیمگیریهای پیچیدهتری را به سادگی مدیریت کنند. استفادهی صحیح و بهینه از این عملگرها نهتنها باعث خوانایی و کارایی بهتر کد میشود، بلکه از بروز خطاهای منطقی در تصمیمگیریهای برنامه نیز جلوگیری میکند. درک عمیق این عملگرها و بهکارگیری آنها در شرایط مناسب، نقش مهمی در بهبود ساختار و عملکرد کلی کد دارد.