Các giải pháp khác ở đây đều có sự cẩn thận (mặc dù chúng giải quyết câu hỏi trong tầm tay). Nếu bạn (1) lặp qua các loại hỗn hợp hoặc (2) muốn một giải pháp chung mà bạn có thể xuất dưới dạng hàm hoặc bao gồm trong các tiện ích của mình, thì không có giải pháp nào khác ở đây sẽ hoạt động.
Giải pháp đơn giản và tự giải thích nhất là:
// 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;
Nhưng hầu hết các nhà phát triển đọc mã của bạn sẽ yêu cầu một chuyến đi đến http://php.net/var_export để hiểu những gì var_export
làm và thông số thứ hai là gì.
1. var_export
Hoạt động cho boolean
đầu vào nhưng cũng chuyển đổi mọi thứ khác thành string
tốt.
// 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';
Hoạt động cho đầu vào boolean nhưng chuyển đổi mọi thứ khác (ints, chuỗi) thành true / false.
// OK
true ? 'true' : 'false' // 'true'
// OK
false ? 'true' : 'false' // 'false'
// NOT OK
'' ? 'true' : 'false' // 'false'
// NOT OK
0 ? 'true' : 'false' // 'false'
3. json_encode()
Các vấn đề tương tự như var_export
và có thể tồi tệ hơn vì json_encode
không thể biết true
được chuỗi có chủ đích là chuỗi hay boolean.