Wie kann ich String in boolean
?
$string = 'false';
$test_mode_mail = settype($string, 'boolean');
var_dump($test_mode_mail);
if($test_mode_mail) echo 'test mode is on.';
zurück,
boolescher Wert
aber es sollte sein boolean false
.
Wie kann ich String in boolean
?
$string = 'false';
$test_mode_mail = settype($string, 'boolean');
var_dump($test_mode_mail);
if($test_mode_mail) echo 'test mode is on.';
zurück,
boolescher Wert
aber es sollte sein boolean false
.
Diese Methode wurde von @lauthiamkok in den Kommentaren gepostet. Ich poste sie hier als Antwort, um mehr Aufmerksamkeit darauf zu lenken.
Je nach Ihren Bedürfnissen sollten Sie Folgendes in Betracht ziehen filter_var()
mit dem FILTER_VALIDATE_BOOLEAN
Flagge.
filter_var( true, FILTER_VALIDATE_BOOLEAN); // true
filter_var( 'true', FILTER_VALIDATE_BOOLEAN); // true
filter_var( 1, FILTER_VALIDATE_BOOLEAN); // true
filter_var( '1', FILTER_VALIDATE_BOOLEAN); // true
filter_var( 'on', FILTER_VALIDATE_BOOLEAN); // true
filter_var( 'yes', FILTER_VALIDATE_BOOLEAN); // true
filter_var( false, FILTER_VALIDATE_BOOLEAN); // false
filter_var( 'false', FILTER_VALIDATE_BOOLEAN); // false
filter_var( 0, FILTER_VALIDATE_BOOLEAN); // false
filter_var( '0', FILTER_VALIDATE_BOOLEAN); // false
filter_var( 'off', FILTER_VALIDATE_BOOLEAN); // false
filter_var( 'no', FILTER_VALIDATE_BOOLEAN); // false
filter_var('asdfasdf', FILTER_VALIDATE_BOOLEAN); // false
filter_var( '', FILTER_VALIDATE_BOOLEAN); // false
filter_var( null, FILTER_VALIDATE_BOOLEAN); // false
Strings werden immer als boolesches true ausgewertet, es sei denn, sie haben einen Wert, der von PHP als "leer" angesehen wird (aus der Dokumentation für empty
):
""
(eine leere Zeichenkette);"0"
(0 als Zeichenkette)Wenn Sie einen booleschen Wert auf der Grundlage des Textwerts einer Zeichenkette setzen müssen, müssen Sie prüfen, ob dieser Wert vorhanden ist oder nicht.
$test_mode_mail = $string === 'true'? true: false;
EDIT: Der obige Code dient der Klarheit des Verständnisses. Für die tatsächliche Verwendung ist der folgende Code möglicherweise besser geeignet:
$test_mode_mail = ($string === 'true');
oder vielleicht die Verwendung des filter_var
Funktion kann mehr boolesche Werte abdecken:
filter_var($string, FILTER_VALIDATE_BOOLEAN);
filter_var
deckt eine ganze Reihe von Werten ab, darunter auch die wahrheitsgemäßen Werte "true"
, "1"
, "yes"
y "on"
. Siehe aquí für weitere Einzelheiten.
Der String "false"
ist eigentlich ein "TRUE"
Wert durch PHP. Die Dokumentation sagt:
Um einen Wert explizit in einen booleschen Wert zu konvertieren, verwenden Sie t Umwandlungen. In den meisten Fällen ist die Umwandlung jedoch unnötig, da ein Wert automatisch konvertiert wird, wenn ein Operator, eine Funktion oder eine Kontroll Struktur ein boolsches Argument verlangt.
Siehe auch Schriftjonglage.
Bei der Umwandlung in einen booleschen Wert werden die folgenden Werte als FALSCH angesehen:
der boolesche Wert FALSE selbst
die ganze Zahl 0 (Null)
der Schwebekörper 0,0 (Null)
die leere Zeichenkette, und die Zeichenkette "0".
ein Array mit Nullelementen
ein Objekt mit null Mitgliedsvariablen (nur PHP 4)
der spezielle Typ NULL (einschließlich nicht gesetzter Variablen)
SimpleXML-Objekte, die aus leeren Tags erstellt werden
Jeder andere Wert wird als WAHR betrachtet (einschließlich aller Ressourcen).
Wenn Sie es also tun:
$bool = (boolean)"False";
o
$test = "false";
$bool = settype($test, 'boolean');
in beiden Fällen $bool
wird sein TRUE
. Sie müssen es also manuell tun, wie GordonM vorschlägt.
Wenn ich mit JSON arbeitete, musste ich einen booleschen Wert über $_POST
. Ich hatte ein ähnliches Problem, als ich etwas wie:
if ( $_POST['myVar'] == true) {
// do stuff;
}
Im obigen Code wurde mein Boolescher Wert in eine JSON-Zeichenfolge umgewandelt.
Um dies zu umgehen, können Sie die Zeichenkette mit json_decode()
:
//assume that : $_POST['myVar'] = 'true';
if( json_decode('true') == true ) { //do your stuff; }
(Dies sollte normalerweise mit booleschen Werten funktionieren, die in eine Zeichenkette umgewandelt und auch auf andere Weise an den Server gesendet werden, d. h. anders als mit JSON).
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.