与intval
/(int)
、floatval
/(float)
等相同。
据我所知,两者都没有更改原始变量,而且都返回了casted版本。它们的功能似乎完全相同。
是否存在存在差异的边缘情况?
有什么理由使用其中一个而不是另一个吗?
最佳实践?
我假设(bool)
"更好",因为我认为它可能比内部可能只做同样事情的函数调用更快。如果是这样的话,这些boolval
/intval
/floatval
函数有什么意义?
在大多数情况下,它们是相同的,但也有细微的差异:
- 一些函数(如
intval
)接受第二个参数($base
),而强制转换语法不接受该参数 - 函数调用的开销稍大
- 函数可以用作回调(例如
array_map('intval', ..)
),这在强制转换语法中是不可能的
使用boolval
与(bool)
在以下情况下有差异:如果你需要返回bool并且有两个int:
return 1 & 1
-返回int
return (bool) 1 & 1
-抛出错误(使用strict_types)return (bool) (1 & 1)
-返回布尔return boolval(1 & 1)
-返回布尔