我在阅读这篇问题时看到了这行代码:
if ($a == $b) { return true } else { return false }
我开始想,怎么样才是将一个未知类型的变量(可能是字符串,也可能是整数;谁知道呢?谁在乎呢?)转换为布尔值的最佳方式?
当然,if ($var) { return true; } else { return false; }
可以实现,但我认为 return $var ? true : false;
可能更好。
同理:
return $var && true
return $var || false
return !empty($var)
这些都可能更好,但有没有一种最佳的强制转换布尔值的方法?更重要的是,什么让它成为最佳方式?
编辑以澄清:
这不是旨在成为强制转换为布尔值的全面列表。我的问题是关于显式类型转换的。在了解empty
之前,我使用 isset($var) && $var
来防止出现未声明变量时抛出错误。现在我使用 !empty($var)
,因为它打字速度更快。
!empty
的(缺点)优点是在未定义变量时不会抛出任何E_NOTICE
错误。如果您正在检查 $_GET
或 $_SESSION
变量,这可能是一个好的选择,对于大多数其他变量而言,它可能被认为是不好的,因为它会隐藏未初始化但应该已经初始化的变量的问题。
我想知道其他开发人员是否有另一种做事情的方式,我之前并不了解。
(bool)
进行显式类型转换一直比较快。 - Styphon