我无法找到规范的相关部分来回答这个问题.在Java中的条件运算符语句中,是否评估了true和false参数?
因此,以下内容可能会抛出NullPointerException
Integer test = null;
test != null ? test.intValue() : 0;
Run Code Online (Sandbox Code Playgroud) 今天,我开口满口如下:
$asdf = ((1 OR true) ? "asdf" : "fdsa");
var_dump($asdf); // print "asdf"
$asdf = (1 OR true) ? "asdf" : "fdsa";
var_dump($asdf); // print "asdf"
$asdf = (1 OR true ? "asdf" : "fdsa");
var_dump($asdf); // print true
$asdf = 1 OR true ? "asdf" : "fdsa";
var_dump($asdf); // print 1
Run Code Online (Sandbox Code Playgroud)
好吧,最后一次并不让我感到惊讶,但第三次?谁能解释一下?
我正想通过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 …
一个简单的问题可以消除对大量if/else语句的需求.
例如,如果我有这样的查询:
if ($success1=$db->query('SELECT * FROM `foo`;') || $success2=$db->query('SELECT * FROM `bar`;')) {
...
}
Run Code Online (Sandbox Code Playgroud)
是否会在第一次查询成功时停止检查?
PHP在逻辑运算符方面的本质是什么?假设a并且b是表达式:
if (a || b) { body }
Run Code Online (Sandbox Code Playgroud)
以下内容哪些是对的?