Php 哪一个“如果(!isset($foo)或(isset($foo)和$foo=$bar)”或“如果(!isset($foo)或$foo=$bar)”更好?

Php 哪一个“如果(!isset($foo)或(isset($foo)和$foo=$bar)”或“如果(!isset($foo)或$foo=$bar)”更好?,php,Php,我知道这可能是一个“noob问题”,但我想知道我应该使用哪一个命题: 1. if(!isset($foo) OR (isset($foo) AND $foo == $bar)) {} 2. if(!isset($foo) OR $foo == $bar) {} 问题是,我要问的是,条件中的“OR”是否自然地表示“$foo存在,如果您愿意,您可以检查他的值”,或者您是否必须指定它可能存在(使用isset东西) 谢谢你的回答,也很抱歉我的通俗英语……) 或,和,|和&都执行或和|从左到右计算它们的

我知道这可能是一个“noob问题”,但我想知道我应该使用哪一个命题:

1. if(!isset($foo) OR (isset($foo) AND $foo == $bar)) {}
2. if(!isset($foo) OR $foo == $bar) {}
问题是,我要问的是,条件中的“OR”是否自然地表示“
$foo
存在,如果您愿意,您可以检查他的值”,或者您是否必须指定它可能存在(使用
isset
东西)


谢谢你的回答,也很抱歉我的通俗英语……)

|
&
都执行
|
从左到右计算它们的参数,直到得到第一个真实值,然后返回该值
和&&从左到右计算它们的参数,直到它们得到第一个falsy值,然后返回它。在这两种情况下,它们都不计算任何剩余的参数


所以你应该使用#2,因为当
时!isset($foo)
是真的,它永远不会计算第二个表达式,因此无需再次检查isset($foo)。

第一个表达式是多余的,所以使用#2.哪一个更好。你没有理由不复制条件的那个,或者你没有理由复制条件的那个?@Ryan Thx!正如我所想,条件中的
足以说明变量$foo存在@PeeHaa,我能再解释一下吗?你为什么说没有好的理由?在我的if条件下,我必须检查一个变量是否不存在,或者,如果存在,它是否等于一个特定的值。。。你会怎么做?
执行短路。因此,只有当第一个表达式为false时,才会计算第二个表达式。