ホームページ >バックエンド開発 >PHPチュートリアル >PHPでこのようなif文を書けますか?それとも私が考えすぎているのでしょうか?

PHPでこのようなif文を書けますか?それとも私が考えすぎているのでしょうか?

WBOY
WBOYオリジナル
2016-06-23 14:12:15834ブラウズ

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 ();
この 2 つの文は条件付きでは関係ありませんね。上の文が && でつながっているのはなぜですか?
$pid != -1;
$map['pid'] = $pid; を直接記述することとの違いは何ですか?


ディスカッションへの返信 (解決策)

&& は論理 AND 演算であり、アサートされます。これは、前の式が true の場合にのみ次の式が実行されることを意味します。 false の場合、2 番目の式は実行されません

$pid != -1 && $map['pid'] = $pid;



if($pid != -1) {
$map[ 'pid'] = $pid;
}

これは、&& の前の式が成立しない場合、次の式は実行されないためです。

実際、このように書くことはお勧めできません。第 1 に、&& の後の内容が変わると間違いを犯しやすくなります。

&& は論理 AND 演算であり、アサートされます。これは、前の式が true の場合にのみ次の式が実行されることを意味します。 false の場合、2 番目の式は恥を実行しません。私はいつもこれを使って

if (A 条件 && B 条件) {
....
}
A と B が両方とも true の場合にのみ実行されます。

$pid != -1 && $map['pid'] = $pid;


if($pid != -1) {
$map['pid'] = $pid; と同等
これは、&& が短絡演算であるため、&& の前の式が成立しない場合、次の式は実行されません。

実際、このように書くことはお勧めできません。第 1 に、&& の後の内容が変更されると、間違いが発生しやすくなります。 わかりました、ありがとう、私自身はこのように書くことはめったにありません。他の人のコードを見るのはとにかくやりがいがあります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。