有人能解释一下为什么会这样吗:
var_dump((bool) 1==2);
返回
bool(true)
但
var_dump(1==2);
返回
bool(false)
当然第二次返回是正确的,但是为什么第一次php返回一个意想不到的值?
发布于 2011-12-05 10:44:56
实际上,这并不像看起来那么奇怪。(bool)
has higher precedence than ==
,所以这是:
var_dump((bool) 1==2);
等同于:
var_dump( ((bool) 1) == 2);
或者这样:
var_dump(true == 2);
由于使用了type juggling,2
实质上也会转换为bool
(因为这是一个“松散的比较”),所以它等同于:
var_dump(true == true);
或者这样:
var_dump(true);
发布于 2014-01-13 18:37:07
我是这样使用的:
!!0 (false)
!!1 (true)
发布于 2020-12-20 15:56:43
filter_var -使用特定的过滤器过滤变量
$boolvar = filter_var('true', FILTER_VALIDATE_BOOLEAN);
boolval -获取变量PHP5 >=的布尔值
$boolvar = boolval ('true');
和字面上的三元运算符,但我不能推荐它
$boolvar = ($string === 'true') ? true: false;
https://stackoverflow.com/questions/8380452
复制相似问题