!! $ var和(bool)$ var之间有什么区别吗?

时间:2013-09-20 19:54:11

标签: php casting

当您想要投射数据类型时,使用!!(bool)运算符之间是否存在任何差异?

    $number = 1;

    var_dump( (bool) $number ) //true
    var_dump( !! $number ) //true

2 个答案:

答案 0 :(得分:7)

meagar在评论中提到的

(bool)在语义上更有意义。另外,请记住,(bool)正在执行一项操作,而!!正在执行两项操作(双重否定)。性能差异几乎检测不到,但如果大量使用,可能会增加。

答案 1 :(得分:0)

使用'!!'让你加倍否定这句话。正如您所使用的那样!PHP将自动将变量转换为boolean,并且由于您否定了否定,因此变量的值将保持不变。因此,使用'(bool)'或'!!'来转换变量基本上有相同的效果。