如何将字符串转换为布尔值?

$string = 'false';

$test_mode_mail = settype($string, 'boolean');

var_dump($test_mode_mail);

if($test_mode_mail) echo 'test mode is on.';

它返回,

布尔真

但它应该是布尔值为false。


当前回答

(boolean)json_decode(strtolower($string))

它处理$string的所有可能变体

'true'  => true
'True'  => true
'1'     => true
'false' => false
'False' => false
'0'     => false
'foo'   => false
''      => false

其他回答

其他的答案是过于复杂的事情。这是一个简单的逻辑问题。只要你的陈述正确就行了。

$boolString = 'false';
$result = 'true' === $boolString;

现在你的答案是两者之一

False,如果字符串是' False ', 或者true,如果你的字符串为true。

我必须注意filter_var($boolString, FILTER_VALIDATE_BOOLEAN);如果你需要像on/yes/1这样的字符串作为true的别名,仍然是一个更好的选择。

最简单的方法是:

$str = 'TRUE';

$boolean = strtolower($str) == 'true' ? true : false;

var_dump($boolean);

这样做,你可以循环一系列'true', 'true', 'false'或'false',并将字符串值获取为布尔值。

(boolean)json_decode(strtolower($string))

它处理$string的所有可能变体

'true'  => true
'True'  => true
'1'     => true
'false' => false
'False' => false
'0'     => false
'foo'   => false
''      => false

你也可以使用settype方法!

$string = 'false';
$boolean = settype($string,"boolean");
var_dump($boolean); //see 0 or 1

字符串总是计算为布尔值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”。请看这里了解更多细节。