عملگرهای منطقی (Logical Operators) در PHP برای ترکیب شرطها و تصمیمگیری در برنامه استفاده میشوند.
این عملگرها معمولاً در دستورات شرطی (if
)، حلقهها (while
، for
) و بررسی صحت مقادیر کاربرد دارند.
در این مقاله، انواع عملگرهای منطقی در PHP را معرفی کرده و با ارائه مثالهای کاربردی، نحوه استفاده از آنها را بررسی میکنیم.
۱. معرفی عملگرهای منطقی در PHP
PHP دارای ۵ عملگر منطقی اصلی است:
عملگر | نام | توضیح | مثال |
---|---|---|---|
&& یا and | و (AND) | مقدار true را فقط زمانی برمیگرداند که هر دو شرط درست باشند. | (true && true) => true |
` | یا or` | یا (OR) | |
! | نقیض (NOT) | مقدار را برعکس میکند، اگر مقدار true باشد، آن را به false تبدیل میکند و برعکس. | (!true) => false |
xor | یا انحصاری (XOR) | مقدار true را فقط زمانی برمیگرداند که یکی از شرطها درست باشد، اما نه هر دو. | (true xor false) => true |
and , or | نسخههای متنی AND و OR | اولویت اجرای پایینتری نسبت به && و ` |
✅ نکته: عملگرهای &&
و ||
دارای اولویت بالاتری نسبت به and
و or
هستند.
۲. بررسی دقیق عملگرهای منطقی
۲.۱ عملگر &&
و and
(و – AND)
این عملگر مقدار true
را فقط در صورتی برمیگرداند که هر دو شرط درست باشند.
<?php
$age = 25;
$is_student = true;
if ($age > 18 && $is_student) {
echo "شما مجاز به دریافت تخفیف دانشجویی هستید.";
}
?>
✅ اگر هر دو شرط ($age > 18
و $is_student
) درست باشند، پیام نمایش داده میشود.
❌ اگر یکی از شرطها نادرست باشد، شرط برقرار نمیشود.
۲.۲ عملگر ||
و or
(یا – OR)
این عملگر مقدار true
را زمانی برمیگرداند که حداقل یکی از شرطها درست باشد.
<?php
$age = 17;
$has_permission = false;
if ($age >= 18 || $has_permission) {
echo "شما مجاز به ورود هستید.";
} else {
echo "ورود شما مجاز نیست.";
}
?>
✅ اگر یکی از شرطها درست باشد، شرط برقرار میشود.
❌ اگر هر دو شرط نادرست باشند، شرط برقرار نمیشود.
۲.۳ عملگر !
(نقیض – NOT)
این عملگر مقدار را برعکس میکند:
- اگر مقدار true باشد، آن را false میکند.
- اگر مقدار false باشد، آن را true میکند.
<?php
$is_logged_in = false;
if (!$is_logged_in) {
echo "لطفاً ابتدا وارد حساب خود شوید.";
}
?>
✅ در این مثال، چون $is_logged_in = false
است، !false
مقدار true
برمیگرداند و شرط اجرا میشود.
۲.۴ عملگر xor
(یا انحصاری – XOR)
این عملگر مقدار true
را فقط زمانی برمیگرداند که یکی از شرطها درست باشد، اما نه هر دو.
<?php
$a = true;
$b = false;
if ($a xor $b) {
echo "یکی از متغیرها true است، اما نه هر دو.";
}
?>
✅ جدول نتایج عملگر xor
:
شرط اول | شرط دوم | نتیجه (xor ) |
---|---|---|
true | true | false |
true | false | true |
false | true | true |
false | false | false |
۲.۵ تفاوت &&
با and
و ||
با or
✅ &&
و ||
دارای اولویت بالاتری نسبت به and
و or
هستند.
❌ اگر از and
یا or
در عبارات پیچیده استفاده کنید، ممکن است نتایج غیرمنتظره بگیرید.
<?php
$result1 = true && false;
$result2 = true and false;
var_dump($result1); // false
var_dump($result2); // true (چون اولویت and کمتر است و مقدار true به $result2 انتساب داده شده)
?>
نتیجه:
&&
اولویت بالاتری دارد و ابتدا شرط ارزیابی میشود.and
اولویت کمتری دارد و مقدارtrue
ابتدا به$result2
اختصاص داده میشود.
✅ پس همیشه از &&
و ||
در شرایط منطقی استفاده کنید.
۳. ترکیب عملگرهای منطقی در شرطهای پیچیده
۳.۱ استفاده از پرانتز برای افزایش خوانایی
در شرایط پیچیده، بهتر است از پرانتز برای کنترل اولویت اجرای شرطها استفاده کنید.
<?php
$age = 20;
$has_id = true;
$is_vip = false;
if (($age >= 18 && $has_id) || $is_vip) {
echo "ورود مجاز است.";
}
?>
✅ اگر کاربر بالای ۱۸ سال باشد و مدرک شناسایی داشته باشد یا VIP باشد، اجازه ورود دارد.
۳.۲ ترکیب !
با سایر عملگرها
<?php
$is_admin = false;
$is_logged_in = true;
if ($is_logged_in && !$is_admin) {
echo "شما وارد شدهاید، اما مدیر نیستید.";
}
?>
✅ اگر کاربر وارد شده باشد اما مدیر نباشد، پیام نمایش داده میشود.
۴. استفاده از عملگرهای منطقی در حلقهها
عملگرهای منطقی در حلقههای while
و for
نیز به کار میروند.
مثال در while
<?php
$number = 1;
while ($number <= 10 && $number % 2 == 0) {
echo $number . "<br>";
$number++;
}
?>
✅ فقط اعداد زوج کوچکتر یا مساوی ۱۰ چاپ میشوند.
نتیجهگیری
✅ عملگرهای منطقی برای ترکیب شرطها و تصمیمگیریهای پیچیده استفاده میشوند.
✅ همیشه از &&
و ||
بهجای and
و or
استفاده کنید.
✅ در شرایط پیچیده، از پرانتز برای افزایش خوانایی و کنترل اولویت اجرا استفاده کنید.
✅ عملگر xor
را زمانی استفاده کنید که فقط یکی از شرطها باید درست باشد، اما نه هر دو.
با یادگیری این عملگرها، میتوانید شرطهای پیشرفته و کدهای بهینهتری در PHP بنویسید! 🚀