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

2022-08-30 05:55:03

如何将字符串转换为?boolean

$string = 'false';

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

var_dump($test_mode_mail);

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

它返回,

布尔真

但它应该是.boolean false


答案 1

此方法由@lauthiamkok在评论中发布。我在这里发布它作为答案,以引起更多关注。

根据您的需要,应考虑与标志一起使用。filter_var()FILTER_VALIDATE_BOOLEAN

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

答案 2

字符串的计算结果始终为布尔 true,除非它们具有 PHP 认为为“空”的值(取自文档中的):

  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""1""yes""on"


推荐