我看到了这行代码,我问自己这个语法的原因
if(false && isset($_SESSION['new_user']) && $_SESSION['new_user'] == true)
基本上,上下文是如果我们有新用户,我们会以不同于现有用户的方式对待他。
我的第一个猜测是避免在null变量中搜索值。所以首先他测试是否有变量,如果有,他检查它的值。那是他做的吗?
但是同一个if语句中的所有内容。
我的问题是,如果if语句的第一部分为false,则第二部分未经过测试?这是一个好习惯吗?或者最好这样做:
if(($_SESSION['new_user']){
if ($_SESSION['new_user'] == true){
[...]
}
}
答案 0 :(得分:3)
您的解释是正确的。使用&&
(AND)时,如果不满足第一个条件,则不会检查其他条件。
因此,只要您了解代码的工作原理,格式化if
的方式无关紧要。
但是,在您的第一个示例中,false
将确保条件永远不会成立。在这种情况下它很没用。
答案 1 :(得分:1)
如果IF语句中AND表达式的第一部分为false,则无需测试其余部分。所以这是正确的,并以这种方式使用。
因为
,IF语句总是返回falseif (false && ...)
所以if-block永远不会运行。这样做可以简单地排除运行代码而不删除代码(因为有些人可能稍后需要它)。这不是一个好的编程实践。
如果要检查值是否存在且不为空(在php false == empty中),可以执行以下操作以使查询更简单(省略第一个条件为false):
if (!empty($_SESSION['new_user'])) {
如果存在键,则empty()隐式检查。这意味着你可以摆脱isset()。但这只适用于检查emtpy /非空值的情况。如果要检查特定ID,则必须使用
if (isset($_SESSION['new_user']) && $_SESSION['new_user'] == 'myNewUser') {