Solusi lain di sini semua memiliki peringatan (meskipun mereka menjawab pertanyaan di tangan). Jika Anda (1) mengulang tipe campuran atau (2) menginginkan solusi generik yang dapat Anda ekspor sebagai fungsi atau disertakan dalam utilitas Anda, tidak ada solusi lain di sini yang akan berfungsi.
Solusi paling sederhana dan paling jelas adalah:
// 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;
Tetapi sebagian besar pengembang membaca kode Anda akan memerlukan perjalanan ke http://php.net/var_export untuk memahami apa yang var_exportdilakukan dan apa param kedua.
1. var_export
Bekerja untuk booleanmasukan tapi bertobat segala sesuatu yang lain untuk stringjuga.
// 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';
Berfungsi untuk input boolean tetapi mengubah segalanya (int, string) menjadi 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()
Masalah yang sama var_exportdan mungkin lebih buruk karena json_encodetidak dapat mengetahui apakah string trueitu dimaksudkan string atau boolean.