如何将字符串转换为布尔类型 php
如何将字符串转换为布尔类型 php
如何将字符串转换为布尔值
?
$string = 'false'; $test_mode_mail = settype($string, 'boolean'); var_dump($test_mode_mail); if($test_mode_mail) echo 'test mode is on.';
它返回:
布尔值 true
但应该是布尔值 false
。
admin 更改状态以发布 2023年5月21日
字符串在PHP中总是被视为布尔值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值"true"
、"1"
、"yes"
和"on"
。请参阅这里了解更多详情。
这种方法是由@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