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_export
dilakukan dan apa param kedua.
1. var_export
Bekerja untuk boolean
masukan tapi bertobat segala sesuatu yang lain untuk string
juga.
// 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_export
dan mungkin lebih buruk karena json_encode
tidak dapat mengetahui apakah string true
itu dimaksudkan string atau boolean.