โซลูชันอื่น ๆ ที่นี่ทั้งหมดมีข้อควรระวัง (แม้ว่าพวกเขาจะตอบคำถามในมือ) หากคุณ (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
นั้นตั้งใจให้เป็นสายอักขระหรือบูลีน