গতকাল আমি এই নিয়ে হোঁচট খেয়েছি যখন আমি অন্য কারও দ্বারা লিখিত পিএইচপি কোডটি সংশোধন করেছি। আমি বিস্মিত হয়েছি যে একটি সাধারণ তুলনা ( if ($var ==! " ")
) প্রত্যাশার মতো কার্যকর হয়নি। কিছু পরীক্ষার পরে আমি বুঝতে পারি যে যে কেউ এই কোডটি লিখেছেন সে তুলনা অপারেটরের ==!
পরিবর্তে ব্যবহার করেছেন used !==
আমি ==!
কোনও ভাষায় কখনও দেখিনি তাই আমি ভাবছিলাম যে এই কোডটি কীভাবে কাজ করতে পারে এবং কিছু পরীক্ষাও করতে পারে:
<?php
echo "int\n";
echo "1 !== 0: "; var_dump(1 !== 0);
echo "1 !== 1: "; var_dump(1 !== 1);
echo "1 ==! 0: "; var_dump(1 ==! 0);
echo "1 ==! 1: "; var_dump(1 ==! 1);
echo "bool\n";
echo "true !== false: "; var_dump(true !== false);
echo "true !== true: "; var_dump(true !== true);
echo "true ==! false: "; var_dump(true ==! false);
echo "true ==! true: "; var_dump(true ==! true);
echo "string\n";
echo '"a" !== " ": '; var_dump("a" !== " ");
echo '"a" !== "a": '; var_dump("a" !== "a");
echo '"a" ==! " ": '; var_dump("a" ==! " ");
echo '"a" ==! "a": '; var_dump("a" ==! "a");
?>
এটি এই আউটপুট উত্পাদন করে:
int
1 !== 0: bool(true)
1 !== 1: bool(false)
1 ==! 0: bool(true)
1 ==! 1: bool(false)
bool
true !== false: bool(true)
true !== true: bool(false)
true ==! false: bool(true)
true ==! true: bool(false)
string
"a" !== " ": bool(true)
"a" !== "a": bool(false)
"a" ==! " ": bool(false)
"a" ==! "a": bool(false)
অপারেটর মনে হয় বুলিয়ান এবং পূর্ণসংখ্যার ভেরিয়েবলের জন্য কাজ করে তবে স্ট্রিংয়ের জন্য নয়। আমি ==!
কোনও সার্চ ইঞ্জিনে পিএইচপি ডকুমেন্টেশন বা এটি সম্পর্কে কিছুই খুঁজে পাচ্ছি না (চেষ্টা করেছেন গুগল, বিং, ডাকডাকগো, তবে আমি সন্দেহ করি যে তারা আক্ষরিক স্ট্রিং অনুসন্ধানের পরিবর্তে এটি ব্যাখ্যা করার চেষ্টা করেছেন)। কেউ কি এর আগে দেখেছেন এবং এই আচরণ সম্পর্কে কোনও আলোকপাত করতে পারেন?