कल जब मैंने किसी और के द्वारा लिखे गए PHP कोड को संशोधित किया तो मैं इस पर लड़खड़ा गया। मैं चकित था कि एक साधारण तुलना ( if ($var ==! " ")
) उम्मीद के मुताबिक काम नहीं कर रही थी। कुछ परीक्षण के बाद मुझे एहसास हुआ कि जिसने भी उस कोड का उपयोग तुलना ऑपरेटर के ==!
बजाय किया था !==
। मैंने कभी ==!
किसी भाषा में नहीं देखा है इसलिए मुझे आश्चर्य है कि यह कोड कैसे काम कर सकता है और कुछ परीक्षण किया है:
<?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)
ऑपरेटर बूलियन और पूर्णांक चर के लिए काम करता है, लेकिन तार के लिए नहीं। मैं ==!
किसी भी खोज इंजन पर PHP प्रलेखन या इसके बारे में कुछ भी नहीं पा सकता हूं (Google, Bing, DuckDuckGo की कोशिश की, लेकिन मुझे संदेह है कि वे शाब्दिक स्ट्रिंग की खोज करने के बजाय इसे व्याख्या करने की कोशिश करते हैं)। क्या किसी ने इसे पहले देखा है और इस व्यवहार पर कोई प्रकाश डाल सकता है?