PHP में डबल(!!) ऑपरेटर नहीं




operators (4)

यह "डबल ऑपरेटर" नहीं है, यह ऑपरेटर दो बार लागू नहीं है । सही ! ऑपरेंड के बावजूद , एक बूलियन का परिणाम होगा। फिर बाएं ! उस बुलियन को अस्वीकार कर देगा।

इसका मतलब है कि किसी भी वास्तविक मूल्य के लिए (शून्य, गैर-खाली तार और सरणी आदि के अलावा अन्य संख्या) आपको बूलियन मान TRUE मिलेगा, और किसी भी झूठे मान (0, 0.0, NULL , खाली तार या खाली सरणी) के लिए बुलियन मूल्य FALSE मिलेगा।

यह कार्यात्मक रूप से boolean लिए एक कलाकार के बराबर है:

return (bool)$row;

PHP में डबल ऑपरेटर क्या करता है?

उदाहरण के लिए:

return !! $row;

उपरोक्त कोड क्या होगा?


इसका मतलब है कि अगर $row का एक true मूल्य है, तो यह true हो जाएगा, अन्यथा false , एक बुलियन मूल्य में परिवर्तित हो रहा है।

यहां php दस्तावेज़ों से बूलियन रूपांतरण के लिए उदाहरण अभिव्यक्तियां दी गई हैं।

Expression             Boolean
$x = "";               FALSE
$x = null;             FALSE
var $x;                FALSE
$x is undefined        FALSE
$x = array();          FALSE
$x = array('a', 'b');  TRUE
$x = false;            FALSE
$x = true;             TRUE
$x = 1;                TRUE
$x = 42;               TRUE
$x = 0;                FALSE
$x = -1;               TRUE
$x = "1";              TRUE
$x = "0";              FALSE
$x = "-1";             TRUE
$x = "php";            TRUE
$x = "true";           TRUE
$x = "false";          TRUE

एक और अधिक मानव, शायद सरल, 'पढ़ने' के लिए रास्ता नहीं:

  • सबसे पहला '!' 2 चीजें करता है: मूल्य को 'बूलियन' में परिवर्तित करें, फिर इसके विपरीत आउटपुट करें। तो यह सही होगा अगर मूल्य एक 'झूठा' है।

  • दूसरा '!' पहले के विपरीत आउटपुट करने के लिए है।

तो, मूल रूप से, इनपुट मान कुछ भी हो सकता है, शायद एक स्ट्रिंग, लेकिन आप एक बूलियन आउटपुट चाहते हैं, तो पहले '!' का उपयोग करें। इस बिंदु पर, यदि आप TRUE चाहते हैं तो इनपुट मान 'गलत' है, तो यहां रुकें और केवल एक '!' का उपयोग करें; अन्यथा यदि आप सत्य चाहते हैं तो इनपुट मान 'सत्य' है, फिर एक और '!' जोड़ें।


यह वही है (या लगभग वही - कुछ कोने का मामला हो सकता है) बूल को कास्टिंग के रूप में। अगर $row सच हो जाएगी, तो !! $row !! $row भी सच है।

लेकिन अगर आप (bool) $row प्राप्त करना चाहते हैं, तो आपको शायद इसका उपयोग करना चाहिए - और कुछ "रोचक" अभिव्यक्ति नहीं;)







operators