php中$ bar = boolval($ foo)和$ bar =(bool)$ foo的区别是什么?

时间:2016-01-07 10:45:57

标签: php

intval / (int)floatval / (float)等相同。

据我所知,既没有改变原始变量,也都返回了铸造版本。它们看起来功能相同。

是否有边缘情况存在差异?

任何理由使用一个而不是另一个?

最佳做法?

我假设(bool)是"更好",因为我认为它可能比函数调用更快,内部可能只是做同样的事情。如果情况确实如此,这些boolval / intval / floatval功能的重点是什么?

2 个答案:

答案 0 :(得分:8)

在大多数情况下,它们是相同的,但存在细微差别:

  • 某些函数如intval接受第二个参数($base),其中强制转换语法
  • 函数调用有更多的开销
  • 函数可以用作回调(例如array_map('intval', ..)),这对于强制转换语法是不可能的

答案 1 :(得分:1)

使用 boolval(bool) 在以下情况下有区别: 如果你需要返回 bool 并且有两个整数:

  • return 1 & 1 - 返回 int
  • return (bool) 1 & 1 - 抛出错误(使用 strict_types)
  • return (bool) (1 & 1) - 返回布尔值
  • return boolval(1 & 1) - 返回布尔值