ここでの他のソリューションにはすべて注意点があります(ただし、それらは目前の問題に対応しています)。(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
て、何が行われ、2番目のパラメーターが何であるかを理解する必要があります。
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';
ブール入力で機能しますが、その他すべて(int、string)を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()
文字列が文字列とブールのどちらを意図していたのかわからないvar_export
ため、同じ問題が発生し、おそらくさらに悪化します。json_encode
true