यहां अन्य समाधानों में सभी केवेट हैं (हालांकि वे हाथ में प्रश्न को संबोधित करते हैं)। यदि आप मिश्रित प्रकारों पर (1) लूपिंग कर रहे हैं या (2) एक जेनेरिक सॉल्यूशन चाहते हैं, जिसे आप फंक्शन के रूप में एक्सपोर्ट कर सकते हैं या अपनी उपयोगिताओं में शामिल कर सकते हैं, तो यहां कोई भी अन्य सॉल्यूशन काम नहीं करेगा।
सबसे सरल और सबसे आत्म-व्याख्यात्मक समाधान है:
// simplest, most-readable
if (is_bool($res) {
$res = $res ? 'true' : 'false';
}
// same as above but written more tersely
$res = is_bool($res) ? ($res ? 'true' : 'false') : $res;
// Terser still, but completely unnecessary function call and must be
// commented due to poor readability. What is var_export? What is its
// second arg? Why are we exporting stuff?
$res = is_bool($res) ? var_export($res, 1) : $res;
लेकिन आपके कोड को पढ़ने वाले अधिकांश डेवलपर्स को यह समझने के लिए http://php.net/var_export की यात्रा की आवश्यकता होगी var_export
कि दूसरा पैराम क्या है और क्या है।
1। var_export
boolean
इनपुट के लिए काम करता है, लेकिन बाकी सब को भी बदल देता है string
।
// OK
var_export(false, 1); // 'false'
// OK
var_export(true, 1); // 'true'
// NOT OK
var_export('', 1); // '\'\''
// NOT OK
var_export(1, 1); // '1'
2। ($res) ? 'true' : 'false';
बूलियन इनपुट के लिए काम करता है, लेकिन बाकी सब (ints, तार) को सही / गलत में परिवर्तित करता है।
// OK
true ? 'true' : 'false' // 'true'
// OK
false ? 'true' : 'false' // 'false'
// NOT OK
'' ? 'true' : 'false' // 'false'
// NOT OK
0 ? 'true' : 'false' // 'false'
3। json_encode()
के रूप में एक ही मुद्दे var_export
और शायद बदतर के बाद से json_encode
पता नहीं चल सकता है कि क्या स्ट्रिंग true
एक स्ट्रिंग या बूलियन का इरादा था।