PHPのisset関数の使い方と挙動確認9パターン!

PHP

PHPのisset関数の使い方や挙動について書いています。
書いているコードはPHPバージョン8で確かめました。

公式の関数ドキュメントは下記になります。
PHP: isset - Manual

isset関数について

isset関数は渡した変数が宣言されていること、そして変数がnullじゃないことをチェックしてくれます。

if (isset($hoge)) {
    // issetでtrueだった場合の処理
}

上記のように使うことができます。
引数に渡した$hoge値が入っていれば、trueになります。
値が入っていなかったり、nullの場合はfalseが返ってきます。

個人的には、引数はひとつだけ渡して使用することが多いです。
ですが、チェックする引数として、複数渡すことも可能です。

isset($hoge, $fuga, $piyo);

複数の引数を渡した場合は、全ての引数に値が格納されている場合だけtrueになります。
ひとつでも値が入っていない場合はfalseです。

それでは次項のサンプルコードで、実際にどのような挙動になるか確認しましょう。

isset関数についての挙動確認

isset関数を使ったサンプルコードを見ていきます。

数値が入力されている

変数に数値を入れた場合です。
trueになって、結果は「値が入力されています!」になります。

<?php
$value = 7;

if (isset($value)) {
    echo "値が入力されています!";
} else {
    echo "値が入力されていません。";
}

空文字が入力されている

変数に空文字(“”)を入れた場合です。
trueになって、結果は「値が入力されています!」になります。

<?php
$value = "";

if (isset($value)) {
    echo "値が入力されています!";
} else {
    echo "値が入力されていません。";
}

0が入力されている

変数に0を入れた場合です。
trueになって、結果は「値が入力されています!」になります。

<?php
$value = 0;

if (isset($value)) {
    echo "値が入力されています!";
} else {
    echo "値が入力されていません。";
}

nullが入力されている

変数にnullを入れた場合です。
falseになって、結果は「値が入力されていません。」になります。

<?php
$value = null;

if (isset($value)) {
    echo "値が入力されています!";
} else {
    echo "値が入力されていません。";
}

何も設定していない変数が入力される

変数に値が何も設定されていない場合です。
falseになって、結果は「値が入力されていません。」になります。

<?php
if (isset($value)) {
    echo "値が入力されています!";
} else {
    echo "値が入力されていません。";
}

trueが入力される

変数にtrueが入力されている場合です。
trueになって、結果は「値が入力されています!」になります。

<?php
$value = true;

if (isset($value)) {
    echo "値が入力されています!";
} else {
    echo "値が入力されていません。";
}

falseが入力される

変数にfalseが入力されている場合です。
trueになって、結果は「値が入力されています!」になります。

<?php
$value = false;

if (isset($value)) {
    echo "値が入力されています!";
} else {
    echo "値が入力されていません。";
}

空配列が入力される

変数に空配列が入力されている場合です。
trueになって、結果は「値が入力されています!」になります。

<?php
$value = [];

if (isset($value)) {
    echo "値が入力されています!";
} else {
    echo "値が入力されていません。";
}

クラスのインスタンスが変数に入力される

変数にクラスのインスタンスが入力されている場合です。
trueになって、結果は「値が入力されています!」になります。

<?php
class Test {
}

$value = new Test();

if (isset($value)) {
    echo "値が入力されています!";
} else {
    echo "値が入力されていません。";
}

isset関数で複数の引数を渡してみる

複数渡したパターンも試してみました。
$param1,$param2,$param3全てに値が格納されていればtrueになります。
ひとつでも値が設定されていないかnullの場合にfalseです。

下記の場合は、全て値が設定されているので、結果は「値が入力されています!」です。

<?php
$param1 = 100;
$param2 = 200;
$param3 = false;

if (isset($param1, $param2, $param3)) {
    echo "値が入力されています!";
} else {
    echo "値が入力されていません。";
}

isset関数で定数を渡すとエラーになる

isset関数を使った場合に定数や、値を直接渡すとエラーになります。

PHP Fatal error: Cannot use isset() on the result of an expression

下記のようなコードは全てNGです。
isset関数には変数しか渡せません。

<?php
define("TEST_NUMBER", 100);

isset(TEST_NUMBER); // エラーになる
isset(100); // エラーになる
isset("");  // エラーになる
isset(true);  // エラーになる

isset関数の挙動まとめ

サンプルコードで確認した挙動をまとめてみました。

入力値  返り値
7 true
“” true
0 true
null false
$value false
true true
false true
[] true
new Class() true

falseが入った変数もisset関数ではtrueで判定されました。
「未定義の変数」もしくは「null」だけが、falseになるという認識でいれば良さそうですね。

コメント

タイトルとURLをコピーしました