プログラムの実行中、値の格納されていない変数や、 NULLの入った変数を参照することによって、例外エラーが発生するケースがよくあります。
そうした問題を解決する方法として、事前に変数の値を確認する方法がありますが、その際に活用できる関数が PHP には用意されています。
今回は、その関数のうちの1つである 「isset」 関数について、詳しく解説していきたいと思います。
isset関数の使い方
isset関数の詳しい使い方について、順に見ていきましょう。
基本構文
まずは、基本構文から解説していきます。
isset関数を使用する際は、以下のような構文で記述します。
【基本構文】
isset($変数名1 [, $変数名2 ...] )
引数には、値の有無を確認したい変数の名前を指定します。
変数名は複数指定することが可能です。
関数の戻り値は、真偽値が返却されます。
値が設定されており、かつ NULL が格納されていない場合に true、そうでなければ falseが結果として返されます。
また、複数の変数を指定した場合は、全ての変数に NULL 以外の値がセットされている場合のみ、trueが返されます。
以下のサンプルコードで、実際の動きを確認してみましょう。
【サンプルコード】
<?php
$sampleSet1 = '値があります';
$sampleSet2 = 10;
$sampleUnset;
$sampleNULL = null;
// 単体での確認結果
var_dump(isset($sampleSet1));
var_dump(isset($sampleSet2));
var_dump(isset($sampleUnset));
var_dump(isset($sampleNULL));
// 複数指定での確認結果
var_dump(isset($sampleSet1, $sampleSet2));
var_dump(isset($sampleSet1, $sampleUnset));
var_dump(isset($sampleSet1, $sampleNULL));
?>
【実行結果】
bool(true)
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
bool(false)
このように、値が空の場合だけでなく、NULL が格納されている場合も判定は false となります。
そのため、 NULL 以外の値が確実に格納されていることを確認したい場合に、この関数を活用することができます。
ただし、一点気を付けるべきポイントとして、空文字は値が格納されているものとみなして true 扱いとなるため、注意が必要です。
if文の条件式で使用する
isset関数の戻り値は真偽値であるため、if文の条件分として活用することもできます。
以下のサンプルコードで動きを見てみましょう。
【サンプルコード】
<?php
$sampleSet = 'これはサンプルコードです。';
if(isset($sampleSet)){
echo $sampleSet, "\n";
}else{
echo '値がセットされていません', "\n";
}
?>
【実行結果】
これはサンプルコードです。
上記のサンプルコードの場合は、isset関数で確認した変数に文字列が格納されているため、true の場合の処理が実行されています。
これを応用し、例えば入力フォームのデータ送信時に何かしらの文字が入力されているかを確認するなど、様々なケースで活用することができます。
【サンプルコード】
if (!isset($_POST['name']){
echo '名前を入力してください';
}
三項演算子で使用する
先ほどif文の条件式に isset関数を活用する方法について解説しましたが、ケースによっては三項演算子を使用することでより簡潔に処理を記述できる場合があります。
以下のサンプルコードで、実際の使い方を見てみましょう。
【サンプルコード】
<?php
$sampleSet = 'これはサンプルコードです。';
// 三項演算子を使用
$result = isset($sampleSet) ? $sampleSet : '値がセットされていません';
echo $result, "\n";
?>
【実行結果】
これはサンプルコードです。
変数 result に値を格納する際に使用しているのが三項演算子です。
同様の内容を if文に書き換えると、以下のようなコードになります。
【サンプルコード】
<?php
$sampleSet = 'これはサンプルコードです。';
if(isset($sampleSet)){
$result = $sampleSet;
}else{
$result = '値がセットされていません';
}
?>
見比べてみると、三項演算子によってコードが簡略化されているのが分かりますね。
使用可能なケースかどうか、どちらの方がより読みやすいコードになるかは場合によりますが、覚えておくと便利な記述方法です。
配列に空の要素が含まれるかを調べる
isset関数を使用して、配列に空の要素が含まれているかどうかを確認することもできますが、使用の際には気を付けるべきポイントがあります。
まずは、以下のサンプルコードを見てください。
【サンプルコード】
<?php
$array1 = [1, 2, 3, 4, 5];
$array2 = [1, 2, null];
var_dump(isset($array1));
var_dump(isset($array2));
?>
【実行結果】
bool(true)
bool(true)
コードを見てみると、片方の配列には NULL が含まれているのが分かりますが、結果はどちらも true となっています。
このように、引数に配列そのものを指定すると結果が正常に表示されないため、要素の1つ1つを取り出して判定する必要があります。
【サンプルコード】
<?php
$array = [1, 2, null, 4, 5];
foreach ($array as $key => $value) {
var_dump(isset($array[$key]));
}
?>
【実行結果】
bool(true)
bool(true)
bool(false)
bool(true)
bool(true)
連想配列の要素を確認する際も同様となります。
【サンプルコード】
<?php
$humanArray = [
'Tanaka' => 15,
'Yamada' => 20,
'Sato' => null,
'Suzuki' => 18,
'Endo' => 23
];
// 正しく表示されない
var_dump(isset($humanArray));
// 要素を取り出して確認する
var_dump(isset($humanArray['Sato']));
?>
【実行結果】
bool(true)
bool(false)
empty関数で変数の値が空であるかを確認する
isset関数とよく似た動きをする関数に、empty関数があります。
empty関数を使用する際は、以下の構文で記述します。
【基本構文】
bool empty ( $変数名 )
両者のもっとも大きな違いは、空文字などが変数に格納されている場合に、空の状態であると判定されるか否かにあります。
isset関数では、未定義状態と NULL の場合のみが空であると判定されますが、empty関数の場合は空文字なども条件に含まれます。
具体的には、以下の条件は全て値が空であると判断されます。
'' (空文字列)
0 (整数)
0.0 (浮動小数点数)
"0" (文字列の 0)
NULL
false
また、isset関数とは戻り値の条件が逆となるので注意が必要です。
- isset関数:空の場合は false
- empty関数:空の場合は true
以下のサンプルコードで、それぞれの動きの違いを見てみましょう。
【サンプルコード】
<?php
$nullStr = null;
$emptyStr = '';
// isset関数の場合
var_dump(isset($nullStr));
var_dump(isset($emptyStr));
// empty関数の場合
var_dump(empty($emptyStr));
var_dump(empty($emptyStr));
?>
【実行結果】
bool(false)
bool(true)
bool(true)
bool(true)
空の場合の戻り値の違いや、値が空であると判断する基準が異なっているのが分かりますね。
判断する条件によって、2つの関数を使い分けるといいでしょう。
特定の定数が存在しているかをdefined関数で調べる
変数ではなく、定数の有無を確認したい場合は、defined関数を使用して調べることができます。
defined関数の基本構文は、以下のように記述します。
【基本構文】
defined(定数名)
指定した定数が定義されている場合は true、無ければ false が返却されます。
【サンプルコード】
<?php
define('CONSTSAMPLE', 10);
var_dump(defined('CONSTSAMPLE'));
?>
【実行結果】
bool(true)
まとめ
予期しないエラーを未然に防ぐために、変数の中身を確認しておくことは重要です。
今回紹介した isset 関数や empty 関数などを活用して、プログラムをより安全に運用していきましょう。
PHPの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、PHPに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。