عملگر های 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 ( منطقی )
ارسال نظر