463 Stimmen

Wie konvertiert man string in boolean php

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 .

894voto

Brad Punkte 151817

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

484voto

GordonM Punkte 30109

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 ):

  1. "" (eine leere Zeichenkette);
  2. "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.

44voto

wosis Punkte 1159

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.

20voto

Nishanth Shaan Punkte 1382

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).

18voto

isnvi23h4 Punkte 1768

Können Sie json_decode verwenden, um diesen Booleschen Wert zu dekodieren

$string = 'false';
$boolean = json_decode($string);
if($boolean) {
  // Do something
} else {
  //Do something else
}

CodeJaeger.com

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.

Powered by:

X