PHP:ループの中で条件分岐のネストが深くなってしまったら?

ループの中で条件分岐のネストが多重になってしまうと非常に読みにくいので、continueを使って処理をはじいていきましょう。

以下の例で見ていきましょう!

改善前

<?php
foreach($items as $item){
  if($item == "条件1"){
    if($item == "条件2"){
      if($item== "条件3"){
        dosomething();
      } else {
        except3();
      }
    } else{
      except2();
    }
  } else {
    except1();
  }
  allways_do();
}

例えばこんな処理の時、foreachの中身がif文の3重ネストになっていますね。これを修正すると…

改善後

if文の中の判定条件を反転させて、条件に合わないものである場合、改善前にelseで行っていたとif文の下で常に行っていた処理を実行してcontinueでループの先頭に戻ります。 これをネストしていた分繰り返すと…

<?php
foreach($items as $item){
  if($item != "条件1"){
    except1();
    allways_do();
    continue;
  }

  if($item != "条件2"){
    except2();
    allways_do();
    continue;
  }
  if($item != "条件3"){
    except3();
    allways_do();
    continue;
  }

  dosomething();
  allways_do();
}

見にくかった3重の処理が見やすくなります。

AWS構築サービスの全てをまとめた資料を公開中

ハックノート(TOWN株式会社)では、AWSの導入や構築支援を行っています。AWS導入メニューやサービス詳細、構成例や費用を掲載した資料をダウンロードできます。

AWSの新規導入やAWSへの移行を検討の際は、ぜひご参考ください。