if文補足説明
そふぃのPHP入門 >> PHP言語リファレンス >> PHPの制御構造 >> if文補足説明

if文補足説明

複数の条件式

if文やelseif文での条件式は複数並べて書く事もできます。

and(&&)構文「~かつ」

例えば、「もし○○なおかつ××なら△△・・・・」という処理などはネスト(入れ子)にしなくても論理演算子のand(&&)を使って複数の条件を指定する事ができます。

and(&&)演算子は左辺と右辺の両方がTRUEである場合に条件式がTRUEと判定されます。「and」と「&&」は優先順位が違うだけで動作は同じです。

参考 演算子の優先順位

if文サンプル:ネスト

  1. $a = 1;
  2. $b = 3;
  3.  
  4. if( $a == 1 ){
  5.   if( $b == 3 ){
  6.     echo '$aは1であり$bは3である。';
  7.   }
  8. }

if文サンプル:and構文

  1. <?php
  2. $a = 1;
  3. $b = 3;
  4.  
  5. if( $a == 1 and  $b == 3 ){
  6.   echo '$aは1であり$bは3である。';
  7. }
  8. ?>

or(||)構文「~もしくは」

「○○かつ××」はand(&&)演算子で条件指定できますが、「○○もしくは××」というどちらかがTRUEであれば良いという構文は論理演算子のor(||)演算子で指定できます。or(||)演算子はand(&&)演算子のように左辺と右辺のどちらもTRUEである必要はなく、どちらか片方がTRUEであれば条件式はTRUEと判定されます。

この「or」と「||」も優先順位が違うだけで動作は同じです。

if文サンプル:or構文

  1. <?php
  2. $a = 1;
  3. $b = 3;
  4.  
  5. if( $a == 1 or $b == 1 ){
  6.   echo '$aか$bのどちらかが1である。';
  7. }
  8. ?>

!で否定の構文「~でなければ」

論理演算子の「!」を使えば条件式を否定する事ができます。条件式がFALSEの時にTRUEと判定されますが、「○○でなければ××する」という意味です。

if文サンプル:!構文

  1. <?php
  2. $a = 1;
  3. $b = 5;
  4.  
  5. if( ! ($a == 3 and $b == 3) ){
  6.   echo '$aか$bが3以外です。';
  7. }
  8. ?>

この他否定の演算子には比較演算子の「!=」や「!==」などがあります。上のサンプルなら「!=」を使って書く事もできますね。

演算子のない条件式

条件式の部分は論理型のTRUEもしくはFALSEの判定を行っているだけですので、こんな書き方もできます。

この2つの条件式は同じ動作

  1. if( $a == TRUE )
  2. if( $a )

この2つの条件式も同じ動作

  1. if( $a == FALSE )
  2. if( ! $a )

また、整数の「0」や空文字「""」、未定義の変数などはFALSEとして判定されます。

参考 論理型:論理型への変換

関数を条件式に

条件式に関数を指定する事もできます。関数を指定するとその関数の返り値が評価されます。

未定義の変数はFALSEとして扱われますが、PHPには変数がセットされているかどうか調べる関数があります。

書式

  • bool isset( mixed var )

この関数は引数(関数の括弧の中)に指定した変数が定義されているとTRUE、未定義の状態だとFALSEを返します。使い方は括弧「()」の中に調べたい変数を入れるだけなので簡単です。書式を紹介してますが、今無理に書式を読みとこうとして頭を悩ませる必要はありません。スクリプトを自分で組むようになってPHPマニュアルなんかも参照しなきゃいけなくなってくると嫌でも覚えます(笑)。関数の書式は読めると便利なのですが、私のサイトでは解説の都合上ユーザ定義関数で紹介しています。

この関数を使うと普通ではFALSEと判定されてしまう整数値の「0」や空文字「""」もTRUEと評価してくれます。

  1. <?php
  2. $var = 0;
  3.  
  4. if( $var ){
  5.   echo 'isset関数を使わないで検査';
  6. }
  7.  
  8. if( isset($var) ){
  9.   echo 'isset関数を使って検査';
  10. }
  11. ?>

出力結果

isset関数を使って検査

ただし、isset()関数は変数に「NULL」が代入されている場合には、変数が定義されていてもFALSEが返されますので注意して下さい。