未定義、true、fasle で条件分岐できる？


**最終的にやりたいこと**  
・3つの状態をフラグのように変数で管理したい

**最初に考えたこと**  
・変数に数字を入れようと思ったのですが、数字だと分かりにくいので、true、false、null、未定義辺りで条件分岐したい(可能なら)

**質問**  
・例えば、$hoge が下記何れかであると仮定して;  
true、false、null、未定義

**下記のように条件分岐できるでしょうか？**  
・$hogeが、trueなら  
・$hogeが、falseなら  
・$hogeが、nullなら  
・$hogeが、未定義なら




nullと未定義を区別する方法がわからなかったので、不完全な回答になりますが、true、false、nullまたは未定義、ならば簡単に判別できますね。

[code]

    if( !isset($hoge) ) {
      echo "未定義 or null";
    } else if( $hoge === true ) {
      echo "true";
    } else if( $hoge === false ) {
      echo "false";
    } else {
      echo "other";
    }
    
[/code]

(仮定にあるように「true、false、null、未定義」の何れかであるなら、最後は要らないのですが、まぁ念のため。)

そもそも「数字だと分かりにくい」のに「nullではわかりやすいのか?」という疑問はあるのですが。  
nullと未定義の区別の仕方については、ネットで調べるとすぐに「確かにそうすれば出来るけど…」と言うのは見つかったんですが、あまり紹介したくなるやり方ではなかったので、ここには挙げずにおきます。  
基本的には変数の未定義状態を積極的に状態の一部として使うのはどうかと思う(「値の設定漏れ」と「未定義」の区別がつかなくなる)のですが、issetでnullと未定義を区別できないphpでそんなことに拘る意味があるのかどうかはなんとも言えません。




nullと未定義を区別する方法がわからなかったので、不完全な回答になりますが、true、false、nullまたは未定義、ならば簡単に判別できますね。

[code]

    if( !isset($hoge) ) {
      echo "未定義 or null";
    } else if( $hoge === true ) {
      echo "true";
    } else if( $hoge === false ) {
      echo "false";
    } else {
      echo "other";
    }
    
[/code]

(仮定にあるように「true、false、null、未定義」の何れかであるなら、最後は要らないのですが、まぁ念のため。)

そもそも「数字だと分かりにくい」のに「nullではわかりやすいのか?」という疑問はあるのですが。  
nullと未定義の区別の仕方については、ネットで調べるとすぐに「確かにそうすれば出来るけど…」と言うのは見つかったんですが、あまり紹介したくなるやり方ではなかったので、ここには挙げずにおきます。  
基本的には変数の未定義状態を積極的に状態の一部として使うのはどうかと思う(「値の設定漏れ」と「未定義」の区別がつかなくなる)のですが、issetでnullと未定義を区別できないphpでそんなことに拘る意味があるのかどうかはなんとも言えません。

