如何将字符串转换为布尔类型 php

17 浏览
0 Comments

如何将字符串转换为布尔类型 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日
0
0 Comments

字符串在PHP中总是被视为布尔值true,除非它们的值被认为是PHP中的“空”值(取自empty函数的文档):

  1. ""(一个空字符串);
  2. "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"。请参阅这里了解更多详情。

0
0 Comments

这种方法是由@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

0