PHP অসাধারণ অপারেটর অফার করে অ্যারিথমেটিক, অ্যাসাইনমেন্ট, কমপেরিজন এবং আরও অনেক অপারেশন করতে। এই আর্টিকেলে, লজিক্যাল অপারেটর && এবং AND-র ওপর বেশি গুরুত্ব দেওয়া হয়েছে এবং অধ্যয়ন করব কীভাবে তাদের প্রেসিডেন্সের ভিত্তিতে ব্যবহার করা যায়। লজিক্যাল অপারেটর && এবং AND ট্রু-অর-ফолস ফলাফল দেয়, তাই এগুলোকেও বুলিয়ান অপারেটর বলা হয়।
গভীরে যাওয়ার আগে শিখি AND অপারেটর কী? AND অপারেটর ট্রু রিটার্ন করে যদি এবং শুধু যদি দুটি কন্ডিশনই ট্রু হয়। AND অপারেটর প্রদর্শন করার একটি উদাহরণ নিই।
উদাহরণ
<?php
$val1 = 20;
$val2 = 50;
if ($val1 == 20 and $val2 == 50)
echo "True";
else
echo "False";
?>
আউটপুট:
True
ব্যাখ্যা:
যেহেতু ভেরিয়েবল $val1 = 20 এবং $val2 = 50, কন্ডিশন $val1 == 20 ট্রু ইভ্যালুয়েট করে এবং $val2 == 50 ও ট্রু ইভ্যালুয়েট করে। তাই, দুটি অপারেন্ড ট্রু হলে রেজাল্টও ট্রু হবে। আরেকটি উদাহরণ দেখি।
উদাহরণ ২:
<?php
$a = 30;
$b = 50;
if ($a == 30 and $b == 10)
echo "True";
else
echo "False";
?>
আউটপুট:
False
ব্যাখ্যা:
যেহেতু আমরা ভেরিয়েবল $a = 30 এবং $b = 50 ডিক্লেয়ার করেছি, কন্ডিশন $a == 30 ট্রু ইভ্যালুয়েট করে কিন্তু ইনপুট $b = 50 ডিক্লেয়ারেশনে এবং কন্ডিশনে $b == 10 যা ফালস রিটার্ন করে, তাই AND অপারেশনের রেজাল্ট ফালস হবে।
এখন && অপারেটরের দিকে যাই, এটি AND অপারেটরের মতোই কাজ করে, এটি ট্রু রিটার্ন করে যদি এক্সপ্রেশনে দুটি কন্ডিশন/অপারেন্ডই ট্রু হয়। এখন নিচের উদাহরণটি দেখি যা && অপারেটর ইমপ্লিমেন্ট করেছে।
উদাহরণ:
<?php
$val1 = 25;
$val2 = 5;
if ($val1 == 25 && pow($val2, 2) == $val1)
echo "True";
else
echo "False";
?>
আউটপুট:
True
ব্যাখ্যা:
যেহেতু ভেরিয়েবল $val1 = 25 এবং $val2 = 5, কন্ডিশন $val1 == 25 ট্রু ইভ্যালুয়েট করে এবং pow($val2, 2) == $val1 ও ট্রু ইভ্যালুয়েট করে কারণ $val2 = 5 এর ২ ঘাত ২৫ যা $val1-এর সমান। তাই, $val1 == 25 && pow($val2, 2) == $val1 ট্রু ইভ্যালুয়েট করে কারণ AND লজিক বলে শুধু যখন দুটি অপারেন্ডই ট্রু, AND অপারেশনের রেজাল্ট ট্রু।
নোট:
আরেকটি কেস নিই, যদি ইনপুট ডিক্লেয়ার করি $val2 = 20, কন্ডিশন pow($val2, 2) == $val1 ফালস রেজাল্ট দেবে, তাই AND অপারেশনের রেজাল্ট ফালস হবে।
এখন AND এবং && অপারেটর তুলনা করি তাদের প্রেসিডেন্সের টার্মসে। অপারেশনগুলো একটি এক্সপ্রেশনে অপারেটরদের প্রেসিডেন্স অনুযায়ী পারফর্ম হয়। && অপারেটর প্রায়োরিটি বেশি এবং AND অপারেটর প্রায়োরিটি কম। উপরের পার্থক্যটি নিচের উদাহরণ দিয়ে অধ্যয়ন করি।
<?php
$a = 10;
$b = NULL;
$val = $a && $b;
echo ($val ? 'TRUE' : 'FALSE'), "\n";
$val = $a and $b;
echo ($val ? 'TRUE' : 'FALSE');
?>
আউটপুট:
FALSE
TRUE
ব্যাখ্যা:
দুই অপারেটরের রেজাল্ট ভিন্ন হয় যখন অপারেন্ডগুলো একই। প্রথম এক্সপ্রেশন FALSE আর্টিকুলেট করে যখন দ্বিতীয় এক্সপ্রেশন TRUE আর্টিকুলেট করে mặc dù দুটোই একই অপারেশন ব্যবহার করছে।
প্রথম এক্সপ্রেশন, $val = $a && $b; FALSE আর্টিকুলেট করে কারণ প্রথম && অপারেশন পারফর্ম হয়, তারপর রেজাল্ট ভেরিয়েবল $val-এ অ্যাসাইন হয় কারণ && অপারেটর প্রায়োরিটি = অপারেটর থেকে বেশি।
দ্বিতীয় এক্সপ্রেশন, $val = $a and $b; TRUE ইভ্যালুয়েট করে কারণ and অপারেটর প্রায়োরিটি = অপারেটর থেকে কম তাই = চিহ্নের ডানে থাকা ভেরিয়েবল $a = 10 $val-এ অ্যাসাইন হয়, তাই $val এখন ১০ ধারণ করে এবং তারপর and অপারেশন ইন্টারন্যালি পারফর্ম হয় কিন্তু অ্যাসাইন হয় না, তাই $val এখন TRUE ধারণ করে।
তাই স্পষ্ট করতে, AND অপারেটর এবং && অপারেটরের প্রধান পার্থক্য হলো তাদের প্রেসিডেন্স যদিও দুটোই একই অপারেশন পারফর্ম করে।