PHPのisset
関数の使い方や挙動について書いています。
書いているコードはPHPバージョン8で確かめました。
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
になるという認識でいれば良さそうですね。
コメント