Help us understand the problem. What is going on with this article?

PHPで短絡評価をうまく使って条件分岐をすっきり書く

論理演算をしっかり理解している人にとっては当たり前の内容だと思います。

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(!)がついたりするとややこしくなりますね。

swamp
都内ベンチャー、エンジニア新卒1年目 自分の学習のために書いていきます。 会社での主な使用言語はPHP。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした