如何将字符串转换为布尔值?
$string = 'false';
$test_mode_mail = settype($string, 'boolean');
var_dump($test_mode_mail);
if($test_mode_mail) echo 'test mode is on.';
它返回,
布尔真
但它应该是布尔值为false。
如何将字符串转换为布尔值?
$string = 'false';
$test_mode_mail = settype($string, 'boolean');
var_dump($test_mode_mail);
if($test_mode_mail) echo 'test mode is on.';
它返回,
布尔真
但它应该是布尔值为false。
当前回答
字符串“false”实际上被PHP视为“TRUE”值。 文件说:
To explicitly convert a value to boolean, use the (bool) or (boolean) casts. However, in most cases the cast is unnecessary, since a value will be automatically converted if an operator, function or control structure requires a boolean argument. See also Type Juggling. When converting to boolean, the following values are considered FALSE: the boolean FALSE itself the integer 0 (zero) the float 0.0 (zero) the empty string, and the string "0" an array with zero elements an object with zero member variables (PHP 4 only) the special type NULL (including unset variables) SimpleXML objects created from empty tags Every other value is considered TRUE (including any resource).
所以如果你这样做:
$bool = (boolean)"False";
or
$test = "false";
$bool = settype($test, 'boolean');
在这两种情况下,$bool将为TRUE。所以你必须手动操作,就像GordonM建议的那样。
其他回答
您可以使用json_decode来解码布尔值
$string = 'false';
$boolean = json_decode($string);
if($boolean) {
// Do something
} else {
//Do something else
}
字符串总是计算为布尔值true,除非它们有一个被PHP认为是“空”的值(取自文档中的empty):
""(空字符串); "0"(0作为字符串)
如果需要根据字符串的文本值设置布尔值,则需要检查该值是否存在。
$test_mode_mail = $string === 'true'? true: false;
编辑:上面的代码是为了清晰地理解。在实际使用中,下面的代码可能更合适:
$test_mode_mail = ($string === 'true');
或者使用filter_var函数可以覆盖更多的布尔值:
filter_var($string, FILTER_VALIDATE_BOOLEAN);
Filter_var涵盖了整个范围的值,包括真值“true”,“1”,“yes”和“on”。请看这里了解更多细节。
你也可以使用settype方法!
$string = 'false';
$boolean = settype($string,"boolean");
var_dump($boolean); //see 0 or 1
$string = 'false';
$test_mode_mail = $string === 'false' ? false : true;
var_dump($test_mode_mail);
if($test_mode_mail) echo 'test mode is on.';
你必须手动操作
其他的答案是过于复杂的事情。这是一个简单的逻辑问题。只要你的陈述正确就行了。
$boolString = 'false';
$result = 'true' === $boolString;
现在你的答案是两者之一
False,如果字符串是' False ', 或者true,如果你的字符串为true。
我必须注意filter_var($boolString, FILTER_VALIDATE_BOOLEAN);如果你需要像on/yes/1这样的字符串作为true的别名,仍然是一个更好的选择。