如何将字符串转换为布尔值?
$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。
当前回答
其他的答案是过于复杂的事情。这是一个简单的逻辑问题。只要你的陈述正确就行了。
$boolString = 'false';
$result = 'true' === $boolString;
现在你的答案是两者之一
False,如果字符串是' False ', 或者true,如果你的字符串为true。
我必须注意filter_var($boolString, FILTER_VALIDATE_BOOLEAN);如果你需要像on/yes/1这样的字符串作为true的别名,仍然是一个更好的选择。
其他回答
这个方法是由@lauthiamkok在评论中发布的。我把它贴在这里作为一个答案,以引起更多的关注。
根据需要,您应该考虑使用带有FILTER_VALIDATE_BOOLEAN标志的filter_var()。
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
@GordonM的回答很好。 但如果$string已经为真(即,字符串不是字符串而是布尔true),它将失败…这似乎不合逻辑。
延伸一下他的回答,我会用:
$test_mode_mail = ($string === 'true' OR $string === true));
$string = 'false';
$test_mode_mail = $string === 'false' ? false : true;
var_dump($test_mode_mail);
if($test_mode_mail) echo 'test mode is on.';
你必须手动操作
我对wordpress shortcode属性感到困惑,我决定写一个自定义函数来处理所有可能性。也许对某些人有用:
function stringToBool($str){
if($str === 'true' || $str === 'TRUE' || $str === 'True' || $str === 'on' || $str === 'On' || $str === 'ON'){
$str = true;
}else{
$str = false;
}
return $str;
}
stringToBool($atts['onOrNot']);
您可以使用json_decode来解码布尔值
$string = 'false';
$boolean = json_decode($string);
if($boolean) {
// Do something
} else {
//Do something else
}