লেখক পরিচিতি
লেখা সম্পর্কিত
পিএইচপি টিউটোরিয়াল পর্ব-৭
তুলনামূলক/Comparison অপারেটর
দুটি ভেরিয়েবল বা মান তুলনা করতে তুলনামূলক/ Comparison অপারেটর ব্যবহার হয়। নিচে Comparison অপারেটরের তালিকা দেয়া হলো
উদাহরণ অপারেটর নাম বর্ণনা
$x == $y Equal TRUE হবে যদি $x এবং $y টাইপ জাগলিংয়ের পর সমান হয়
$x === $y Identical TRUE হবে যদি $x এবং $y সমান হয় এবং তাদের টাইপ একই হয়, যেমন দুটোই স্ট্রিং বা
$x != $y Not equal পূর্ণসংখ্যা হলে
$x <> $y Not equal TRUE হবে $x-এর সমান $y না হয় টাইপ জাগলিংয়ের পর
$x !== $y Not identical TRUE হবে $x-এর সমান $y না হয় টাইপ জাগলিংয়ের পর
$x < $y Less than TRUE হবে $x-এর সমান $y না হয় অথবা তাদের টাইপ একই না হয়। যেমন একটা স্ট্রিং
$x > $y Greater than আরেকটা পূর্ণসংখ্যা।
$x <= $y Less than or equal to TRUE হবে যদি $x ছোট হয় $y-এর চেয়ে
$x >= $y Greater than or equal to TRUE হবে $x বড় হয় $y-এর চেয়ে
টাইপ জাগলিং : টাইপ জাগলিং একটি টেকনিক্যাল শব্দ। এর আসল অর্থ হলো অটোমেটিক টাইপ রূপান্তরকরণ। পিএইচপিতে টাইপ ডিক্লেয়ার করতে হয় না বরং পিএইচপির ইঞ্জিন ডাটা দেখেই বুঝে নেয় এটা কোন টাইপের ডাটা, পূর্ণসংখ্যা নাকি স্ট্রিং, ফ্লোটিং নাকি অন্য কিছু। এই অটোমেটিক টাইপ রূপান্তরকে টাইপ জাগলিং বলে।
1. $x = 15;
2. $y = 3;
3. if($x == $y){
4. echo '$x and $y are equal';
5. }else{
6. echo '$x and $y are not equal';
7. }
আউটপুট
$x and $y are not equal
এটি দেখেই বোঝা যাচ্ছে। $x == $y নয়, অর্থাৎ মান দুটি সমান নয়, তাই TRUE রিটার্ন করেনি। ফলে else ব্লকে ঢুকেছে এবং সেখানকার কোড এক্সিকিউট হয়েছে। বাকিগুলোর উদাহরণ একসাথে
1. $x = 15;
2. $y = 3;
3. var_dump($x === $y);
4. var_dump($x != $y);
5. var_dump($x <> $y);
আউটপুট
bool(false) bool(true) bool(true)
যেহেতু $x আর $y সমান নয়, তাই পরের var_dump() দুটি true রিটার্ন করেছে। এবার বলতে পারবেন নিচেরগুলো কি রিটার্ন করবে?
1. $x = 15;
2. $y = 3;
3. var_dump($x < $y);
4. var_dump($x > $y);
5. var_dump($x <= $y);
6. var_dump($x >= $y);
আউটপুট
bool(false) bool(true) bool(false) bool(true)
** var_dump($x >= $y); এটার আউটপুট true আসছে, কারণ সমান না হলেও $x বড় $y-এর চেয়ে আর var_dump($x <= $y); রিটার্ন করেছে false, কেননা $x না ছোট না সমান $y-এর।
সংক্ষেপে এভাবে উদাহরণ দেয়া যায়। আপনি চাইলে প্রথম উদাহরণের মতো if()-এর ভেতর এসব দিয়ে কোড ব্লক চালিয়ে দেখতে পারেন।
** স্ট্রিং আর সংখ্যার তুলনা করলে স্ট্রিংকে পিএইচপি সংখ্যায় রূপান্তর করে, তারপর তুলনা করে। এ ছাড়া পিএইচপির ম্যানুয়ালে আরও কিছু নিয়ম আছে, যেগুলোতে বিবরণ আছে যে কোন কোন জিনিসকে পিএইচপি তুলনা করার আগে রূপান্তর করে। তাই নিচেরগুলো দেখুন সব true রিটার্ন করবে।
1.
2. var_dump(0 == 'test');
3. var_dump('1' == '01');
4. var_dump('100' == '1e2');
5. ?>
লজিকাল/Logical বা যৌক্তিক অপারেটর
লজিকাল/Logical বা যৌক্তিক অপারেটর খুবই গুরুত্বপূর্ণ যেকোনো প্রোগ্রামিংয়ের ক্ষেত্রে। একের অধিক এক্সপ্রেশন বা শর্ত যাচাই করতে এই অপারেটর ব্যবহার হয়। নিচে তালিকা দেয়া হলো।
উদাহরণ অপারেটর নাম বর্ণনা
$x and $y And TRUE হবে, যদি $x এবং $y দুটোই TRUE রিটার্ন করে।
$x or $y Or TRUE হবে, যদি $x অথবা $y-এর যেকোনো একটি TRUE হয়।
$x xor $y Xor TRUE হবে, যদি $x অথবা $y-এর যেকোনোটি TRUE হয়, তবে দুটোই হবে না।
! $x Not TRUE হবে, যদি $x TRUE রিটার্ন না করে (বা TRUE না হয়)।
$x && $y And TRUE হবে, যদি $x এবং $y দুটোই TRUE রিটার্ন করে।
$x || $y Or TRUE হবে, যদি $x অথবা $y-এর যেকোনো একটি $y হয়।
$x এবং $y-এর জায়গায় যেকোনো এক্সপ্রেশন হতে পারে, এমনকি একটা ফাংশনও হতে পারে যেটা TRUE (1) বা FALSE (0) রিটার্ন করবে।
01.
02. $x = 15;
03. $y = 5;
04. if($x < $y and $x + $y > 10){
05. echo 'Both are true';
06. }else if($x < $y or $x + $y > 10){
07. echo 'at least one of them true';
08. }
09. ?>
আউটপুট
at least one of them true
কারণ, $x $y-এর চেয়ে ছোট নয়, কিন্তু দুটোই যোগ করলে ১০-এর চেয়ে বড় হবে, তাই else..if-এর ভেতরের কোড ব্লক এক্সিকিউট হবে। কেননা, সেখানে or লজিক্যাল অপারেটর দেয়া হয়েছে এবং দুটো কন্ডিশন (একটি $x < $y এবং অপরটি $x + $y > 10) আছে আর একটি TRUE রিটার্ন করেছে ($x + $y > 10 এই এক্সপ্রেশনটি)। একই এক্সপ্রেশনগুলো if-এর ভেতর ব্যবহার করা হয়েছে, তারপরও প্রথম কোড ব্লকে ঢুকল না, কারণ সেখানে and লজিক্যাল অপারেটর ব্যবহার করা হয়েছে এবং এর কারণে সেখানে শুধু তখনই ঢুকবে, যখন দুটোই TRUE রিটার্ন করবে।
** and আর অপারেটর একই। শুধু পার্থক্য হচ্ছে এর অগ্রগণ্যতা (precedence) বেশি তদ্রুপ or আর || দুটোই একই অপারেটর। তবে ||-এর অগ্রগণ্যতা বেশি। অর্থাৎ || এবং or দুটোই যদি কোনো এক্সপেশনে থাকে, তাহলে ||-এর এক্সিকিউশন আগে হবে।
01. //it works like (($x = TRUE) and FALSE). FALSE is ignored here and $x is assigned TRUE
02. $x = TRUE and FALSE;
03.
04. //it works like ($y = (TRUE && FALSE)). Expression (TRUE && FALSE) is assigned to $y
05. $y = TRUE && FALSE;
06.
07. //it works like (($z = TRUE) or FALSE). $z is assigned to TRUE and FALSE ignored
08. $z = TRUE or FALSE;
09.
10. //it works like ($a = (TRUE || FALSE)). $a is assigned to the expression (TRUE || FALSE)
11. $a = TRUE || FALSE;
এভাবে অন্যগুলো পরীক্ষা করে দেখতে পারেন।