public function getAreaList($pid = -1) {$map = array();$pid != -1 && $map['pid'] = $pid;return $this->where($map)->order('`area_id` ASC')->findAll();}
$pid != -1 && $map['pid'] = $pid;
return $this->where($map)->order('`area_id` ASC')->findAll();
這兩句沒條件關係吧?上面的一句為什麼要用&&串連呢?與直接寫
$pid != -1;
$map['pid'] = $pid;
的區別是什麼呢?
回複討論(解決方案)
&& 是邏輯與操作,並是斷言的 意思就是 前一個表示式位真,才執行後一個運算式。如果為假,第二個運算式將不會執行
$pid != -1 && $map['pid'] = $pid;
相當於
if($pid != -1) {
$map['pid'] = $pid;
}
這是因為 && 是短路運算,如果 && 前面的運算式不成立的話,後面的運算式就不執行。
其實很不推薦這樣寫,一來是不清晰,容易讓人混淆,二是如果&&後面內容有變化很容易出錯。
&& 是邏輯與操作,並是斷言的 意思就是 前一個表示式位真,才執行後一個運算式。如果為假,第二個運算式將不會執行 慚愧,慚愧。我一直只是用來做
if(A條件&&B條件){
....
}
A、B都成立是才執行。
$pid != -1 && $map['pid'] = $pid;
相當於
if($pid != -1) {
$map['pid'] = $pid;
}
這是因為 && 是短路運算,如果 && 前面的運算式不成立的話,後面的運算式就不執行。
其實很不推薦這樣寫,一來是不清晰,容易讓人混淆,二是如果&&後面內容有變化很容易出錯。 好的謝謝,我自己很少這樣寫。這是在看看別人的代碼,不管怎麼說,有收穫