Die anderen Lösungen hier haben alle Vorbehalte (obwohl sie die vorliegende Frage ansprechen). Wenn Sie (1) eine Schleife über gemischte Typen durchlaufen oder (2) eine generische Lösung wünschen, die Sie als Funktion exportieren oder in Ihre Dienstprogramme aufnehmen können, funktioniert keine der anderen Lösungen hier.
Die einfachste und selbsterklärendste Lösung ist:
// 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;
Die meisten Entwickler, die Ihren Code lesen, benötigen jedoch einen Besuch von http://php.net/var_export, um zu verstehen, var_export
was der zweite Parameter ist.
1. var_export
Funktioniert für die boolean
Eingabe, konvertiert aber auch alles andere in a 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';
Funktioniert für boolesche Eingaben, konvertiert jedoch alles andere (Ints, Strings) in 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()
Gleiche Probleme wie var_export
und wahrscheinlich schlimmer, da json_encode
nicht bekannt ist, ob die Zeichenfolge true
eine Zeichenfolge oder ein Boolescher Wert war.