論理演算をしっかり理解している人にとっては当たり前の内容だと思います。
PHPで複数の条件がある条件分岐を書くとき、、、
example.php
$con_a;//条件A boolean
$con_b;//条件B boolean
if($con_a){
if($con_b){
//処理1
}else{
//処理2
}
}else{
//処理2
}
このように書くと処理2を二度記述することになります。
処理2が短い処理であればこれで良いですが、長くなるとさすがに見づらくなるのでどうにかしたいです。
ここで、PHPのリファレンスを読んでみます。
→https://www.php.net/manual/ja/language.operators.logical.php
document.php
<?php
// --------------------
// foo() は決してコールされることはありません。これらの演算子は短絡評価を行うからです。
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
短絡評価とは、
「≪左辺≫ ≪論理演算子≫ ≪右辺≫」というような、論理演算子による式(論理演算子式)があるとする。左辺(第一引数)を評価した段階で式全体の値が定まらない場合のみ右辺(第二引数)を評価する評価法。
らしいです。(wikipediaより)
つまり、条件が2つ以上ある場合、1つ目の条件で式全体の結果が確定する場合は2つ目以降は考慮しない(する必要がない)ということです。
これを踏まえてexample.php
を書き換えると、
example.php
$con_a;//条件A boolean
$con_b;//条件B boolean
if($con_a && $con_b){
//処理1
}else{
//処理2
}
と書くことができます。
論理演算についてしっかり分かっていれば当然っちゃ当然ですが、条件が複雑になったりnot(!)がついたりするとややこしくなりますね。