如何将字符串转换为布尔值?
$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。
当前回答
你也可以使用settype方法!
$string = 'false';
$boolean = settype($string,"boolean");
var_dump($boolean); //see 0 or 1
其他回答
使用preg_match()编辑显示工作解决方案;根据包含true的字符串返回布尔值true或false。与其他答案相比,这可能比较重,但可以很容易地调整以适合布尔值需要的任何字符串。
$test_mode_mail = 'false';
$test_mode_mail = 'true';
$test_mode_mail = 'true is not just a perception.';
$test_mode_mail = gettype($test_mode_mail) !== 'boolean' ? (preg_match("/true/i", $test_mode_mail) === 1 ? true:false):$test_mode_mail;
echo ($test_mode_mail === true ? 'true':'false')." ".gettype($test_mode_mail)." ".$test_mode_mail."<br>";
最简单的方法是:
$str = 'TRUE';
$boolean = strtolower($str) == 'true' ? true : false;
var_dump($boolean);
这样做,你可以循环一系列'true', 'true', 'false'或'false',并将字符串值获取为布尔值。
$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的别名,仍然是一个更好的选择。
当使用JSON时,我必须通过$_POST发送一个布尔值。当我做类似的事情时,我也遇到了类似的问题:
if ( $_POST['myVar'] == true) {
// do stuff;
}
在上面的代码中,我的布尔值被转换为JSON字符串。
为了克服这个问题,你可以使用json_decode()解码字符串:
//assume that : $_POST['myVar'] = 'true';
if( json_decode('true') == true ) { //do your stuff; }
(这通常适用于布尔值转换为字符串并通过其他方式发送到服务器,即,除了使用JSON。)