issetとは
issetとは変数に値が入っているかどうかを確認することができる関数です。
「変数が宣言されていること」「変数の値がNullではないこと」を確認することができる関数と説明されていたりする場合もあります。
関数の名前からも推測できるので覚え方も簡単ですね。名前通りに”セットされている”か確認できる関数と覚えておきましょう!
issetの使い方
次にissetの基本的な使い方を解説していきます。
issetは引数の指定方法が2パターンあります。
- 引数が1つだけのパターン
- 引数が複数(2つ以上)のパターン
上記の2つのパターンの動きをそれぞれ順番に確認していきます。
引数が1つの場合
issetは関数であると説明しました。
そのため、以下のように引数を指定して記述して実行します。issetで判定したい対象の変数を引数として指定します。
isset($target)
上記の例では「$target」という変数を引数として指定し、issetを実行しています。
判定対象が$targetということになります。
引数が複数の場合
また、issetは複数の引数を指定して実行することもできます。
isset($target1, $target2, $target3)
上記のように複数の引数を指定した場合は
- 全ての引数が”セットされている”状態の場合のみtrueを返す
- 引数の判定は左から行われ、falseになった時点で処理は終了する
という動作となります。
issetの判定の定義
issetの真偽判定では
- 変数が宣言されている
- 変数の値がNullではない
という上記の2つの条件を満たした場合にtrueとなります。
文章での説明だけだと、なんとなく分かりづらいですよね。
以下に具体例を挙げておきます。
変数が宣言済かつ、nullではない場合
まずは通常のtrueのパターンです。
対象の変数が定義されていて、かつnullではないという場合のため、issetの結果はtrueとなります。
//対象の変数を宣言し、1をセット
$target = 1;
if (isset($target)) {
echo "targetは宣言済かつ、nullではないのでtrueとなる。";
}
上記の例ではifの条件に記載しているissetがtrueとなるので、if内の処理が実行されます。
変数が空文字の場合
次に対象の変数が空文字の場合です。
こちらも空文字(””)がセットされていると判断されるので、issetの結果はtrueとなります。
//対象の変数を宣言し、空文字("")をセット
$target = "";
if (isset($target)) {
echo "targetは空文字がセットされているので、trueとなる。";
}
変数が0の場合
変数が数値の0の場合の挙動も確認します。
以下の場合でも0という数値が”セットされている”ので、issetの結果はtrueとなります。
//対象の変数を宣言し、0をセット
$target = 0;
if (isset($target)) {
echo "targetは0という数値がセットされているのでtrueとなる。";
}
issetとemptyの違い
次によくissetと比較されるemptyについて解説していきます。
issetとemptyの比較もしていくので、issetのさらなる理解に役立つのではないでしょうか。
emptyとは
emptyとは、変数が空であるかどうかを判定する関数です。
issetと変数の内容を判定するという点が似ていますね。
また、issetが”セットされているか”、emptyが”空かどうか”を判定するので真逆の結果となりそうですよね。
しかし、値によっては真逆の判定にならなかったりするので、注意が必要です。
判定結果の差分は後に比較する際に確認するとして、まずはemptyの使い方を見ていきましょう。
emptyの使い方
emptyの使い方は以下の通りです。
empty($target)
上記の例では「$target」という変数を引数として指定し、emptyを実行しています。
issetでは変数を複数指定することができましたが、emptyでは複数の指定はできません。
issetとemptyの判定結果の比較
それではissetとemptyの判定結果を具体的に何パターンか比較していきます。
空(””)の場合
まず最初に空文字(””)の場合を見ていきます。
//対象の変数を宣言し、空文字("")をセット
$target = "";
// 【isset】の場合
if (isset($target)) {
echo "targetは空文字がセットされていると判断され、trueとなる。";
}
// 【empty】の場合
if (empty($target)) {
echo "targetは空でありemptyと判断され、trueとなる。";
}
nullの場合
nullの場合は以下のように判定されます。
//対象の変数を宣言し、nullをセット
$target = null;
// 【isset】の場合
if (isset($target)) {
echo "targetはなにもセットされていないと判断され、falseとなる。";
}
// 【empty】の場合
if (empty($target)) {
echo "targetはnullでありemptyと判断され、trueとなる。";
}
FALSEの場合
FALSEの場合は以下のように判定されます。
//対象の変数を宣言し、FALSEをセット
$target = FALSE;
// 【isset】の場合
if (isset($target)) {
echo "targetはFALSEが”セットされている”と判断され、trueとなる。";
}
// 【empty】の場合
if (empty($target)) {
echo "targetは真偽判定の結果のFALSEであり、emptyと判断され、trueとなる。";
}
“0”(文字列の0)の場合
“0”(文字列の0)の場合は以下のように判定されます。
//対象の変数を宣言し、"0"をセット
$target = "0";
// 【isset】の場合
if (isset($target)) {
echo "targetは”0”としてセットされていると判断されるので、trueとなる。";
}
// 【empty】の場合
if (empty($target)) {
echo "targetは真偽判定の結果としてFALSEとなり、FALSEはemptyと判断されるので、trueとなる。";
}
0(数値の0)の場合
最後に数値の0の場合がどう判定されるかを確認します。
//対象の変数を宣言し、0をセット
$target = 0;
// 【isset】の場合
if (isset($target)) {
echo "targetは数値の0がセットされていると判断されるので、trueとなる。";
}
// 【empty】の場合
if (empty($target)) {
echo "targetは真偽判定の結果としてFALSEとなり、FALSEはemptyと判断されるので、trueとなる。";
}
PHP issetの使い方 まとめ
今回はPHPで変数チェックでの関数としては必須のissetを解説していきました。
issetは対象の変数が宣言されているかを確認する関数でした。
また、issetと対をなす挙動の関数としてemptyもあります。
しかし、issetとempty判定結果としては完全に逆の結果となるわけではないので、どのように判定されるのかをしっかり理解して使用するようにしていきましょう!
コメント