2010-08-02 13 views
13

PHP में, जब आपके पास यूआरएल में "var = true" जैसे यूआरएल में कुछ है, तो यूआरएल में 'सत्य' और 'झूठी' को बुलियन वैरिएबल में अनुवाद किया जाता है, या वे 'सत्य' या 'झूठी' पाठ के बराबर? उदाहरण के लिए, यूआरएल में "var = false" है:'सत्य' चर प्राप्त करें

if ($_GET['var'] == false) { ... } 

काम? या क्या चर हमेशा सत्य होगा क्योंकि इसमें टेक्स्ट है?

+0

आप इसे क्यों परीक्षण नहीं करते हैं? – Ponkadoodle

उत्तर

14

वे तारों के रूप में पारित कर रहे हैं, इसलिए जब तक वे इन में से एक हैं, जो झूठे बजाय का मूल्यांकन हमेशा truthy हैं:

  • रिक्त स्ट्रिंग ''
  • अंकों शून्य '0'
वाली एक स्ट्रिंग

मेरी जिंदगी को आसान बनाने के लिए मैं बस बूलियन जीईटी चर 1 या 0 के रूप में पास करता हूं और उन्हें उन मानों में से एक होने के लिए मान्य करता हूं, या डिफ़ॉल्ट मान पर उचित निर्णय लेता हूं:

// Default value of false 
$var = false; 

if (isset($_GET['var'])) 
{ 
    if ($_GET['var'] === '1' || $_GET['var'] === '0') 
    { 
     $var = (bool) $_GET['var']; 
    } 
} 
+1

वाह PHP में टाइप कास्टिंग है जिसका अर्थ है कि यह सी ++ जैसे किसी अन्य तरीके से है? मिठाई! – Nilbert

+1

@ नीलबर्ट: [हाँ।] (Http://php.net/manual/en/language.types.type-juggling.php#language.types.typecasting) – BoltClock

+2

@ नीलबर्ट PHP की मूल बातें में आपका स्वागत है। :) PHP में पूरी तरह से प्रकार कास्ट किया जाता है। – deceze

17

नहीं, $_GET में केवल तार ही होंगे।

हालांकि, आप filter को बुलियन प्राप्त करने के लिए कर सकते हैं।

FILTER_VALIDATE_BOOLEAN:
रिटर्न "1" के लिए TRUE, "true", "on" और "yes"। अन्यथा FALSE देता है। तो FILTER_NULL_ON_FAILURE सेट किया गया है, FALSE केवल "0", "false", "off", "no", और "" के लिए दिया जाता है, और NULL सभी गैर बूलियन मूल्यों के लिए दिया जाता है।

उदाहरण:

$value = filter_input(INPUT_GET, "varname", FILTER_VALIDATE_BOOLEAN, 
    array("flags" => FILTER_NULL_ON_FAILURE)); 
+1

+1 नहीं पता था कि बुलियन के लिए एक फ़िल्टर था। – BoltClock

+1

http://php.net/filter का एक लिंक उचित होगा। – deceze

+0

थोड़ा सा भयानक लेकिन बहुत आसान, +1। – zerkms

संबंधित मुद्दे