Ich habe eine boolesche Variable, die ich in einen String konvertieren möchte:
$res = true;
Ich möchte, dass der konvertierte Wert das Format hat : "true" "false"
, nicht"0" "1"
$converted_res = "true";
$converted_res = "false";
Ich habe es versucht:
$converted_res = string($res);
$converted_res = String($res);
Aber es sagt mir das string
und String
sind keine erkannten Funktionen.
Wie konvertiere ich diesen Booleschen Wert in einen String im Format "true"
oder "false"
in PHP?
Antworten:
Einfachste Lösung:
$converted_res = $res ? 'true' : 'false';
quelle
?:
Notation ist der einfachste Code, den wir in dieser Situation finden können.echo '<active>' . $res ? 'true' : 'false' . '</active>';
erzeugt nicht das gewünschte Ergebnis,echo '<active>' . ($res ? 'true' : 'false') . '</active>';
tut es.Die Funktion var_export gibt eine Zeichenfolgendarstellung einer Variablen zurück. Gehen Sie dazu folgendermaßen vor:
Das zweite Argument weist die Funktion an, die Zeichenfolge zurückzugeben, anstatt sie wiederzugeben.
quelle
Ein anderer Weg zu tun:
json_encode( booleanValue )
quelle
var_export()
eher der Absicht der Operation (es sei denn, man benötigt die Zeichenfolge für einen JSON, das heißt ;-)Siehe var_export
quelle
edit
fügen Sie relevante Informationen aus dem Link in Ihren Beitrag ein. Obwohl die Informationen nützlich sind, werden sie dem OP angemessener als "Kommentar" überlassen. Alle notwendigen Informationen aus dem Link müssen in die Antwort eingebettet sein. 1) Wenn der Link nicht mehr erreichbar wäre, würde dieser Beitrag unbrauchbar werden. 2) Besucher sollten nicht aufgefordert werden, externe Links zu besuchen, sondern dies nur selbst herauszufinden. Links zu Dokumentationen, Quellen oder zusätzlichen Informationen werden jedoch dringend empfohlen. Vielen Dank für Ihren Beitrag.Sie verwenden strval () oder (string), um in PHP in einen String zu konvertieren. Dies konvertiert jedoch keinen Booleschen Wert in die tatsächliche Schreibweise von "wahr" oder "falsch". Sie müssen dies also selbst tun. Hier ist eine Beispielfunktion:
quelle
$val = true;
dannstrval($val)
und(string) $val
beide zurückkehren 1.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:
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 astring
.2.
($res) ? 'true' : 'false';
Funktioniert für boolesche Eingaben, konvertiert jedoch alles andere (Ints, Strings) in true / false.
3.
json_encode()
Gleiche Probleme wie
var_export
und wahrscheinlich schlimmer, dajson_encode
nicht bekannt ist, ob die Zeichenfolgetrue
eine Zeichenfolge oder ein Boolescher Wert war.quelle
var_export()
scheint das Beste für den spezifischen Anwendungsfall zu sein, danke.var_export(boolval($var), true)
ist dies eine sichere Methode, um den Wert in die Zeichenfolgen "true" oder "false" umzuwandeln.if (is_bool($res) { $res = $res ? 'true' : 'false'; }
<< das wird nicht funktionieren - fehlt)
vielleicht ist es besser zu verwenden$result = (is_bool($var) && $var) ? 'true' : 'false';
$value = is_bool($value) ? var_export($value, true) : $value;
diese Weise lebe ich den Wert intakt und ändere nur den Booleschen Wert in ihre Zeichenfolgendarstellung.$res = $res
?? Meinten Sie :$res == $res
? Oder sogar :$res === $res
?Warum einfach nicht so?:
quelle
Für mich wollte ich eine Zeichenfolgendarstellung, es sei denn, dies war
null
der Fall. In diesem Fall wollte ich, dass sie erhalten bleibtnull
.Das Problem mit var_export ist, dass es
null
in eine Zeichenfolge konvertiert"NULL"
und auch eine leere Zeichenfolge in konvertiert"''"
, was unerwünscht ist. Es gab keine einfache Lösung, die ich finden konnte.Dies war der Code, den ich endlich verwendet habe:
Kurz und einfach und leicht eine Funktion zu werfen, wenn Sie es vorziehen.
quelle
boolval()
funktioniert für komplizierte Tabellen, bei denen das Deklarieren von Variablen und das Hinzufügen von Schleifen und Filtern nicht funktioniert. Beispiel:Wo
$tmp
wird ein Schlüssel verwendet, um andere Daten zu transponieren? Hier wollte ich, dass in der Tabelle "Ja" für 1 und nichts für 0 angezeigt wird(boolval($row['special_case']) ? 'Yes' : '')
.quelle
boolval(some_expression) ? .. : ..
sich anders alssome_expression ? .. : ..
?Dies funktioniert auch für jede Art von Wert:
Code:
quelle
Bearbeitet basierend auf dem Vorschlag von @ sebastian-norr, der darauf hinweist, dass die
$bool
Variable ein wahres0
oder ein wahres sein kann oder nicht1
. Zum Beispiel2
beschließt,true
wenn es durch einen Booleschen Test in PHP läuft.Als Lösung habe ich Typguss verwendet, um sicherzustellen, dass wir
$bool
zu0
oder konvertieren1
.Aber ich muss zugeben, dass der einfache Ausdruck
$bool ? 'true' : 'false'
viel sauberer ist.Meine unten verwendete Lösung sollte niemals verwendet werden, LOL.
Hier ist warum nicht ...
Um Wiederholungen zu vermeiden, kann das Array, das die Zeichenfolgendarstellung des Booleschen Werts enthält, in einer Konstante gespeichert werden, die in der gesamten Anwendung verfügbar gemacht werden kann.
quelle
Ich bin kein Fan der akzeptierten Antwort, da sie alles, was als falsch bewertet wird, in
"false"
nicht nur boolesch und umgekehrt umwandelt .Wie auch immer, hier ist meine OTT-Antwort, sie verwendet die
var_export
Funktion.var_export
funktioniert mit allen Variablentypen, außer dassresource
ich eine Funktion erstellt habe , die abhängig von den angegebenen Argumenten eine reguläre Umwandlung in string ((string)
), eine strikte Umwandlung (var_export
) und eine Typprüfung durchführt.quelle
quelle
isset
hier nicht notwendig. In PHPif
ist -test falsch für beidenull
undvariable not defined
. Kann einfach so machen$converted_res = ( $res ? 'true' : 'false' );
wie in älteren Antworten.quelle
Ich wollte nur aktualisieren, in PHP> = 5.50 können
boolval()
Sie das Gleiche tunReferenz hier .
quelle
(bool) $var;
"<td>" . (boolval($row['special_case']) ? 'Yes' : ' ') . "</td>"
boolval()
geht in die andere Richtung und konvertiert eine Variable eines beliebigen Typs in bool, nicht bool in string.