Sud*_*dhi 6 php operator-precedence short-circuiting
我正想通过php.net的运算符优先级部分,碰上了这个例子,其称
$a = 1;
$b = null;
$c = isset($a) && isset($b);
$d = ( isset($a) and isset($b) );
$e = isset($a) and isset($b);
var_dump($a, $b, $c, $d, $e);
//Result:
int(1)
NULL
bool(false)
bool(false) <== I get this
bool(true)  <== I do not get this
Run Code Online (Sandbox Code Playgroud)
我在代码中使用了大量的调试和详细的print(_r)语句来跟踪我在代码中的位置.所以我在代码之间使用$debug and print_r($dataArray)或$verbose and print "Updating dataArray\n"作为单独的语句,允许我控制这些print(_r)语句.这来自我以前写过很多的BASH经验[[ $condition ]] && { #Do if true } || { #Do if false }.在BASH,我知道它们被短路并用这个事实来编写很多简单的一个衬里.
现在我观察到这种(写作$verbose and print)的这种做法正在慢慢渗入我的if陈述中.我知道这不是推荐的做法,可以在后面咬我.但是,我确实想掌握这项技能,因为我喜欢写这样的一个衬垫,并希望将它作为我的个人风格.  
所以我的问题是(是):
&&或and)被短路?&&的优先于and,但是有人可以通过将短路的操作员特征/功能/特性与操作员优先级混合来举例说明这一点.(基本上是混合和匹配的优先和短路)请详细说明操作员的短路和返回值性质.
PS:1.我希望这些操作符的相关性是相同和直观的,但如果你知道任何怪癖,请赐教.
PS:2.如果你仍然想要警告我不要接受这种做法的危险,请包括例子.  
编辑:改变我的简单后$var = mysql_(...) or die()替换代码or用||,我发现是多么烦人的使用||和&&运营商,而不是and和or.代码根本不起作用!据我了解,前结构分配的返回值TRUE或者FALSE到$var,这反过来又使所有相继使用的$var生成警告/错误/意外行为.后者构建体的分配结果mysql_(...)到$var第一和然后评估的化合物=和die.
这对我来说是一个很好的教训,我更好1.开始使用PDO/mysqli并自己处理错误2.在写上面我称之为个人风格的内容之前,请三思而后行.
//注意自己:在用另一个编写代码时不要使用一种脚本/解释语言的经验,每种语言都是独一无二的,并且有自己的怪癖和陷阱,这就是悲伤*叹息*
代码
$e = isset($a) and isset($b);
Run Code Online (Sandbox Code Playgroud)
解析与...相同
($e = isset($a)) and isset($b);
Run Code Online (Sandbox Code Playgroud)
因此$e,由决定isset($a)和分配决定true- 独立于评估isset($b).