Wie kann ich einen String konvertieren boolean
?
$string = 'false';
$test_mode_mail = settype($string, 'boolean');
var_dump($test_mode_mail);
if($test_mode_mail) echo 'test mode is on.';
es kehrt zurück,
Boolescher Wert wahr
aber es sollte sein boolean false
.
!!$string1
würde einen Booleschen Wert zurückgeben, der die in der am besten bewerteten Antwort angegebene Zeichenfolge angibt.Antworten:
Strings werden immer als boolean true ausgewertet, es sei denn, sie haben einen Wert, der von PHP als "leer" betrachtet wird (entnommen aus der Dokumentation für
empty
):""
(eine leere Zeichenfolge);"0"
(0 als Zeichenfolge)Wenn Sie einen Booleschen Wert basierend auf dem Textwert einer Zeichenfolge festlegen müssen, müssen Sie prüfen, ob dieser Wert vorhanden ist oder nicht.
BEARBEITEN: Der obige Code dient der Klarheit des Verständnisses. Bei der tatsächlichen Verwendung ist der folgende Code möglicherweise besser geeignet:
oder vielleicht kann die Verwendung der
filter_var
Funktion mehr boolesche Werte abdecken:filter_var
umfasst eine ganze Reihe von Werten, einschließlich der truthy Werte"true"
,"1"
,"yes"
und"on"
. Sehen Sie hier für weitere Details.quelle
$string === 'true'
filter_var($string, FILTER_VALIDATE_BOOLEAN);
ist es eine gute Sache?Diese Methode wurde von @lauthiamkok in den Kommentaren gepostet. Ich poste es hier als Antwort, um mehr Aufmerksamkeit darauf zu lenken.
Abhängig von Ihren Anforderungen sollten Sie die Verwendung
filter_var()
mit derFILTER_VALIDATE_BOOLEAN
Flagge in Betracht ziehen .quelle
filter_var($answer, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)
hat noch besser für mich gearbeitet. Siehe php.net/manual/en/function.filter-var.php#121263Der String
"false"
wird"TRUE"
von PHP tatsächlich als Wert betrachtet. Die Dokumentation sagt:Wenn Sie dies tun:
oder
in beiden Fällen
$bool
wird seinTRUE
. Sie müssen es also manuell tun, wie GordonM vorschlägt.quelle
Bei der Arbeit mit JSON musste ich einen Booleschen Wert über senden
$_POST
. Ich hatte ein ähnliches Problem, als ich so etwas tat wie:Im obigen Code wurde mein Boolescher Wert in eine JSON-Zeichenfolge konvertiert.
Um dies zu überwinden, können Sie die Zeichenfolge folgendermaßen dekodieren
json_decode()
:(Dies sollte normalerweise mit Booleschen Werten funktionieren, die in Zeichenfolgen konvertiert und auch auf andere Weise an den Server gesendet werden, dh nicht mithilfe von JSON.)
quelle
Sie können json_decode verwenden, um diesen Booleschen Wert zu dekodieren
quelle
Es behandelt alle möglichen Varianten von
$string
quelle
on
undoff
?Wenn Ihre "boolesche" Variable aus einem globalen Array wie $ _POST und $ _GET stammt, können Sie die
filter_input()
Filterfunktion verwenden.Beispiel für POST:
Wenn Ihre "boolesche" Variable aus einer anderen Quelle stammt, können Sie die
filter_var()
Filterfunktion verwenden.Beispiel:
quelle
Sie können verwenden
boolval($strValue)
Beispiele:
Dokumentation http://php.net/manual/es/function.boolval.php
quelle
echo boolval('false');
=> 1echo (int)'false;
oderecho intval('false');
(int)'true'
undintval('true')
beide geben auch 0 zurück (alle Zeichenfolgen tun es)Am einfachsten ist dies:
Auf diese Weise können Sie eine Reihe von 'true', 'TRUE', 'false' oder 'FALSE' durchlaufen und den String-Wert auf einen Booleschen Wert bringen.
quelle
Andere Antworten sind überkompliziert. Diese Frage ist einfach eine logische Frage. Machen Sie einfach Ihre Aussage richtig.
Jetzt wird Ihre Antwort entweder sein
false
, wenn die Zeichenfolge war'false'
,true
, wenn Ihre Zeichenfolge war'true'
.Ich muss beachten, dass dies
filter_var( $boolString, FILTER_VALIDATE_BOOLEAN );
immer noch eine bessere Option ist, wenn Sie Zeichenfolgen wieon/yes/1
als Alias für benötigentrue
.quelle
oder
quelle
Sie müssen angeben
Andernfalls werden Sie immer falsch, auch wenn $ string etwas anderes enthält.quelle
Sie können auch die Settype-Methode verwenden!
SetType ($ var, "Boolean") Echo $ var // siehe 0 oder 1
quelle
Ich mache es auf eine Weise, die in jedem Fall die unempfindliche Version des Strings "false" in den booleschen Wert FALSE umwandelt, sich aber unter Verwendung der normalen PHP-Casting-Regeln für alle anderen Strings verhält. Ich denke, dies ist der beste Weg, um unerwartetes Verhalten zu verhindern.
Oder als Funktion:
quelle
Die Antwort von @GordonM ist gut. Aber es würde fehlschlagen, wenn das
$string
bereits isttrue
(dh die Zeichenfolge ist keine Zeichenfolge, sondern boolesche WAHR) ... was unlogisch erscheint.Um seine Antwort zu erweitern, würde ich verwenden:
quelle
Ich war verwirrt mit WordPress-Shortcode-Attributen und entschied mich, eine benutzerdefinierte Funktion zu schreiben, um alle Möglichkeiten zu nutzen. Vielleicht ist es für jemanden nützlich:
quelle
Eine einfache Möglichkeit besteht darin, anhand eines Arrays von Werten zu prüfen, die Sie für wahr halten.
quelle
Bearbeitet, um eine hier nicht erwähnte Möglichkeit aufzuzeigen, da meine ursprüngliche Antwort weit davon entfernt war, mit der Frage des OP in Zusammenhang zu stehen.
preg_match (); Ist möglich zu benutzen. In den meisten Anwendungen ist die Verwendung jedoch viel schwerer als bei anderen Antworten.
/(?:true)|(?:1)/i
Kann bei Bedarf auch in bestimmten Situationen verwendet werden. Es wird nicht korrekt zurückgegeben, wenn eine Zeichenfolge ausgewertet wird, die sowohl "false" als auch "1" enthält.quelle
In PHP können Sie einfach einen Wert in einen Booleschen Wert konvertieren, indem Sie den Operator double not (
!!
) verwenden:quelle
Sie sollten in der Lage sein, mit (bool) in einen Booleschen Wert umzuwandeln, aber ich bin mir nicht sicher, ohne zu überprüfen, ob dies für die Zeichenfolgen "true" und "false" funktioniert.
Dies könnte jedoch einen Pop wert sein
Es ist wichtig zu wissen, dass das Folgende den Booleschen Wert False ergibt, wenn es hineingelegt wird
Alles andere wird als wahr bewertet.
Wie hier beschrieben: http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting
quelle
"false"
in einen Booleschen Wert wird in konvertierttrue
.$myBool = (bool)"False"; if ($myBool) { echo "true"; }