PHP短絡演算子

WBOY
リリース: 2016-06-23 13:31:47
オリジナル
1181 人が閲覧しました

まずはコードを見てみましょう

初めての方は、最終出力が 5 20 であることが一目でわかるかもしれませんが、よく見てみると、() 内の条件式は代入演算ですなので、11 21 と出力されるはずです。しかし、コンピュータは私たちから始まります。面白くないジョークです。彼女の妹の最終出力は 1 21 でした。

コンピューターの思考と人間の脳の思考には違いがあります。プログラミングするときは、コンピューターの思考モード、つまり機械的思考モードを理解する必要があります。この論理式を判定する場合、まず $a と $b に値を代入し、その後 AND 演算を実行します。これは論理演算の結果には影響しませんが、上記の結果も生成されます。副作用。実際、コンピュータはリソースを節約するために、この論理式を解釈するために短絡演算方法を採用しています。 AND 演算子の前の値 ($a など) が false であることが判明した場合、AND 演算式の結果が false であると判断し、論理演算式から抜け出して次の演算を継続します。プログラムなし 式の残りのステートメントが実行されます。

ここで $a の値が 1 になっているのは、条件式で $a = 10 という演算を行う際に php が $a を boolean に変換するためです。上記の例では、$a = 10 が true に変換されるため、{} 内の $a++ は追加できません。ただし、中括弧内の $a++ を $a = $a + 1 に置き換えると、この時点で数値演算を実行できます。

ショートサーキット演算の本質は
論理 AND (&&)-> は、演算子の最初の式が false であるかどうかをチェックし、 false の場合は直接 false を返し、後続の式は無視されます。

論理 OR (||)-> 演算子の最初の式が true であるかどうかを確認し、true であれば直接 true を返し、後続の式は直接無視されます。
PS: && は and よりも優先度が高く、|| は or よりも優先度が高く、等号 (=) は and および or よりも優先度が高くなります
補足

$a = 5; $b = 20;if ($a = 10 || $b = 7) {    $a++;    $b++;}echo $a,"\n","",$b; //1 21
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート