عملگر های Logical ( منطقی ) در PHP

عملگر های Logical ( منطقی ) در PHP

عملگر های Logical ( منطقی ) – با کمک این operator ها می توانیم شرایطی منطقی را در برنامه مان اجرا کنیم .

مثال : اگر آرمان موجودی حسابش 500 هزار تومان بود ( و ) حساب بانکی آن مسدود نبود کد های داخل شرط را اجرا کن .

در این مقاله با 6 عملگر کار خواهیم :

1- or
2- ||
3- xor
4- and
5- &&
6- !

در صورتی که با تابع intval آشنایی ندارید می توانید از این آموزش استفاده کنید .

عملگر or که || هم شناخته می شود

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

در صورتی که یکی از 2 طرف true باشد خروجی true برمی گرداند .

مثل :

echo intval(false or true); // 1
echo intval(true or my_undefined_function()); // 1
echo intval(false or my_undefined_function()); // fatal error

همچنین می توانیم از || استفاده کنیم که دقیقا همان کارایی را دارد اما با علامت متفاوت ( البته در زمان مقدار دهی متغیر متفاوت عمل می کند که در پایین این مقاله توضیح خواهم داد)

echo intval(false || true); // 1
echo intval(true || my_undefined_function()); // 1
echo intval(false || my_undefined_function()); // fatal error

مورد جالبی که در مورد or ( || ) وجود دارد این است که اگر سمت چپ true باشد دیگر سمت راست را بررسی نمی کند . همانطور که در خط 2 مشاهده می کنید با این که تابعی تعریف نشده را صدا می زنیم با خطا مواجه نمی شویم .

از طرفی دیگر خط 3 چون سمت چپ false است سمت راست را برای پیدا کردن true بررسی می کند پس my_undefined_function را بررسی کرده و با خطای fatal مواجه می شویم .

رفتار متفاوت or در مقدار دهی متغیر

زمانی که کد زیر را اجرا کنید برای مقدار دهی متغیر :

$data = false or true; // false  treated as ($data = false) or true

خروجی false دریافت می کنیم . چون PHP آن را اینگونه پردازش می کند :

($data = false) or true

برای حل این مشکل باید آن را درون () بگذاریم :

 $data = (false or true); // 1

این در حالی است که اگر از علامت || استفاده کنیم ، مشکلی نخواهد بود . || به درستی کار می کند و نیازی به ( ) ندارد .

$data = false || true; // 1


عملگر xor

این عملگر اینگونه عمل می کند که اگر فقط سمت چپ یا راست true باشد true برمی گرداند .

echo intval(true xor true); // false
echo intval(false xor false); // false
echo intval(false xor true); // 1
echo intval(true xor false); // 1


رفتار متفاوت xor در مقدار دهی متغیر

این عملگر هم همانند or رفتاری متفاوت از خود در مقدار دهی متغیر نشان می دهد .

$data = true xor true; // 1   treated as ($data = true) xor true

چون اینگونه در نظر گرفته می شود :

($data = true) xor true

( ) همچنان راهکار مان است :

$data = (true xor true); // false


عملگر and که && هم شناخته می شود

در صورتی که هم سمت چپ و هم سمت راست true باشد خروجی true برمی گرداند .
این عملگر برخلاف or در صورتی که سمت چپ true باشد سمت راست را هم بررسی می کند .

و در صورتی که سمت چپ false باشد سمت راست را بررسی نمی کند .

echo intval(true and true); // 1
echo intval(false and my_undefined_function()); // false
echo intval(true and my_undefined_function()); // fatal error

علامت && همان کارایی را دارد :

echo intval(true && true); // 1
echo intval(false && my_undefined_function()); // false
echo intval(true && my_undefined_function()); // fatal error


رفتار متفاوت and در مقدار دهی متغیر

$data = true and false; // 1  treated as ($data = true) and false

اینگونه PHP آن را در نظر می گیرد :

($data = true) and false

( ) راهکاری برای حل این مشکل است

$data = (true and false); // false 

این در حالی است که && به درستی کار می کند و نیازی به ( ) ندارد .

$data = false && true; // false


عملگر NOT که با ! انجام می شود

اینگونه عمل می کند که اگر متغیر یا داده فعلی با false برابر بود true برگرداند .

echo intval(!true); // false
echo intval(!false); // 1

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

echo intval(true==false); // false
echo intval(false==false); // 1

عملگر های Logical ( منطقی )

ارسال نظر

جهت استفاده از کد حتما از تگ pre استفاده نمایید .

contact us