PHP - गलत होने पर इको को इको करने के लिए बूल लें


172

निम्नलिखित कोड कुछ भी प्रिंट नहीं करता है:

$bool_val = (bool)false;
echo $bool_val;

लेकिन निम्नलिखित कोड प्रिंट 1:

$bool_val = (bool)true;
echo $bool_val;

वहाँ मुद्रित करने के लिए एक बेहतर तरीका है 0या falseजब $bool_valहै falseएक जोड़ने से ifबयान?


5
यदि यह डिबगिंग के लिए है, तो प्रतिध्वनि के बजाय var_dump आज़माएं।
मार्क ई। हासे

1
(bool)कलाकारों बेमानी है, तो आप bool करने के लिए डाली bool की जरूरत नहीं है: (bool) true === true
जॉन सुरेल

क्या PHP को कॉन्फ़िगर करने का कोई तरीका है ताकि echo 0==1;आउटपुट 0या false?
मारियो

जवाबों:


250
echo $bool_val ? 'true' : 'false';

या यदि आप केवल उत्पादन चाहते हैं जब यह गलत है:

echo !$bool_val ? 'false' : '';

85
यह किसी भी स्पष्ट लाभ के बिना भ्रामक, फैला हुआ और अप्रभावी है। मैं 20+ वर्षों से प्रोग्रामिंग कर रहा हूं और कभी नहीं चाहता कि मैं 'झूठे' को ऑटो-कंवर्ट में खाली करूं .. कई बार अशक्त हो, लेकिन कभी 'झूठा' नहीं हुआ। मेरा जावा / स्प्रिंग / हाइबरनेट विकास मामूली पीएचपी सिस्टम की तुलना में इतना अधिक स्वच्छ और मजबूत है। मुझे बहुत सारे लोग मिले जो भ्रमित थे .. stackoverflow.com/questions/9042002/… लेकिन मुझे इस डिज़ाइन "फीचर" के वास्तविक कारण के रूप में कोई संदर्भ नहीं मिला ।
थॉमस डब्ल्यू

3
मैं वास्तव में तर्क देना चाहता था कि (स्ट्रिंग) FALSE == "" PHP के प्रलेखन से इस बिट पर आधारित एक अच्छा विचार है: "एक बूलियन TRUE मान स्ट्रिंग" 1 "में परिवर्तित हो जाता है। बूलियन FALSE को" "(खाली) में बदल दिया जाता है। स्ट्रिंग)। यह बूलियन और स्ट्रिंग मानों के बीच रूपांतरण को आगे और पीछे करने की अनुमति देता है। " लेकिन मैंने इसका परीक्षण किया, और (बूल) "0" भी FALSE का मूल्यांकन करता है, इसलिए ... मुझे पता नहीं है। मुझे PHP बहुत पसंद है, लेकिन मैं इस बात से इनकार नहीं कर सकता कि थोड़े अजीब '_>>
बेन

7
यह अजीब नहीं है FALSE == ''। यह पूरी तरह से मान्य है और जावास्क्रिप्ट सहित अन्य भाषाओं का एक हिस्सा है। क्या अजीब है एक खाली स्ट्रिंग के लिए FALSE चूक है। यह डिफ़ॉल्ट रूप से 0. हमेशा होना चाहिए। खासकर जब से TRUE हमेशा डिफ़ॉल्ट होगा 1. यह प्रोग्रामिंग के कार्डिनल नियम को तोड़ देता है। अपना कोड लगातार रखें। यह स्पष्ट रूप से एक बग है।
साहित्यकार

1
जबकि ऐसा करने का यह सबसे सरल तरीका है, एक सरणी चला रहा है प्रिंट_र के माध्यम से जिसमें बूलियन मान होते हैं, वे मान रिक्त दिखाएंगे जब तक कि आप पहले सरणी को एक लूप के माध्यम से नहीं चलाते हैं जो उन्हें स्वैप करता है, इसलिए यदि आप केवल डीबग या लॉग करने का प्रयास कर रहे हैं , यह देखने के लिए गर्दन में एक विशाल दर्द बन जाता है कि क्या मूल्य वास्तव में सच हैं या झूठ या कुछ और जो खाली दिखता है।
डेव हेक

2
@ हालांकि PHP में इसका !! '0'मूल्यांकन किया falseगया है, लेकिन यह trueJS में है। !! ""JS और PHP में गलत है।
चार्ली

64

ऐसा करने का यह सबसे आसान तरीका है:

$text = var_export($bool_value,true);
echo $text;

या

var_export($bool_value)

यदि दूसरा तर्क सत्य नहीं है, तो यह सीधे परिणाम को आउटपुट करेगा।


34

नहीं, चूंकि दूसरा विकल्प Zend इंजन को संशोधित कर रहा है, और उस "बेहतर तरीके" को कॉल करने के लिए किसी को मुश्किल से दबाया जाएगा।

संपादित करें:

यदि आप वास्तव में चाहते थे, तो आप एक सरणी का उपयोग कर सकते हैं:

$boolarray = Array(false => 'false', true => 'true');
echo $boolarray[false];

3
यह एक अजीब तरीका है, क्योंकि सरणी कुंजियाँ बूल प्रकार नहीं हो सकती हैं। PHP उस सरणी को (0 => 'गलत', 1 => 'सही') डालेगी।
मार्क ई। हासे

66
@mehaase: मैं बहुत पहले से PHP के टाइप-हैंडलिंग के प्रति किसी भी प्रकार के तर्क को लागू करने की कोशिश कर रहा हूं। मैं इसे आते ही लेता हूं।
इग्नासियो वाज़क्वेज़-अब्राम्स

32

यह बूलियन मान का प्रिंट आउट लेगा, जैसा कि 1/0 के बजाय है।

    $bool = false;

    echo json_encode($bool);   //false

1
महान जवाब, खासकर अगर आपको वास्तव में JSON में उस बूलियन की आवश्यकता है!
bart

1
यह सबसे अच्छा जवाब है
Shady Sherif


21

मुझे यह पसंद है कि इसका प्रिंट आउट लें

var_dump ($var);

15

var_export वांछित कार्यक्षमता प्रदान करता है।

यह हमेशा के लिए nullया कुछ भी नहीं छापने के बजाय एक मूल्य प्रिंट करेगा falsevar_exportजिस तर्क को पारित किया है, उसके एक PHP प्रतिनिधित्व को प्रिंट करता है, आउटपुट को कॉपी किया जा सकता है / वापस PHP में चिपकाया जा सकता है।

var_export(true);    // true
var_export(false);   // false
var_export(1);       // 1
var_export(0);       // 0
var_export(null);    // NULL
var_export('true');  // 'true'   <-- note the quotes
var_export('false'); // 'false'

यदि आप स्ट्रिंग्स को प्रिंट करना चाहते हैं "true"या "false", आप नीचे के रूप में एक बूलियन को डाल सकते हैं, लेकिन अजीबताओं से सावधान रहें:

var_export((bool) true);   // true
var_export((bool) false);  // false
var_export((bool) 1);      // true
var_export((bool) 0);      // false
var_export((bool) '');     // false
var_export((bool) 'true'); // true
var_export((bool) null);   // false

// !! CAREFUL WITH CASTING !!
var_export((bool) 'false'); // true
var_export((bool) '0');     // false


4
echo(var_export($var)); 

$varबूलियन वेरिएबल कब है, trueया falseइसका प्रिंट आउट लिया जाएगा।


मेरी राय में, जावास्क्रिप्ट में PHP चर का निर्यात करते समय सबसे अच्छा समाधान!
RPDeshaies

3
यह थोड़ा भ्रामक है। var_exportइस मामले में इसका परिणाम प्रतिध्वनित होगा और अशक्त होगा, इसलिए var_export आउटपुट कर रहा है true || false, और echoगूंज रहा है null( '')। आउटपुट को वापस करने के लिए var_export, आपको दूसरे पैरामीटर की आपूर्ति करनी होगी true
जॉन सरेल

@RPDhahaies यदि आप जावास्क्रिप्ट के लिए php चर निर्यात करना चाहते हैं json_encodeएक बेहतर विकल्प है।
-हो


3

स्प्रिंटफ () का %bविकल्प एक बूलियन को पूर्णांक में बदल देगा:

echo sprintf("False will print as %b", false); //False will print as 0
echo sprintf("True will print as %b", true); //True will print as 1

आप इसके साथ परिचित नहीं हैं तो आप इस समारोह मापदंडों के एक मनमाना राशि दे सकते हैं, जबकि पहले एक अपने ouput स्ट्रिंग की तरह प्रतिस्थापन तार के साथ मसालेदार होना चाहिए %bया %sसामान्य स्ट्रिंग प्रतिस्थापन के लिए।

प्रत्येक पैटर्न क्रम में तर्क द्वारा प्रतिस्थापित किया जाएगा:

echo sprintf("<h1>%s</h1><p>%s<br/>%s</p>", "Neat Headline", "First Line in the paragraph", "My last words before this demo is over");

2

json_encode इसे आउट-ऑफ-द-बॉक्स करेगा, लेकिन यह सुंदर (इंडेंटेड, आदि) नहीं है:

echo json_encode(array('whatever' => TRUE, 'somethingelse' => FALSE));

... देता है ...

{"whatever":true,"somethingelse":false}

0
function dump_condition($condition){
    if($condition){
        return "true";
    } else {
        return "false";
    }
 }

स्क्रिप्ट पर उपयोग करें

echo dump_condition(1>0); // print "true"

echo dump_condition(1<0); // print "false"

0

आपका बूलियन बूलियन को कास्टिंग करना और पूर्णांक प्रदर्शित होने की उम्मीद करना। यह काम करता है trueलेकिन झूठ नहीं। चूंकि आपको एक पूर्णांक की उम्मीद है:

echo (int)$bool_val;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.