あなたはPHPで開発作業する時に、デバックの作業で変数の中身や関数の結果を調べるなど、開発に思ったよりも時間がかかっていることで悩んでいませんか?この記事を読むことで、あなたは、PHPのisset関数とそれに類似した関数を知り、変数の中身や関数の結果を知ることができ、PHPでの開発の効率が向上します。実際に私は、正確に、早くデバック作業をすることができるようになりました。アイキャッチ画像出典: PHP.net
今回は、自分が比較的に長く勉強しているPHP(webアプリに使われる言語の一種)という言語で、isset関数という関数について、記事を書いていきます。
この記事もオススメ
この記事の目次
isset関数の定義
isset関数ってそもそも何?
Isset 関数 – 変数がセットされていること、そしてnullではないことを検査する。(PHP documentationより。) 返す値は、true(真)かfalse(偽) のboolean型である。
文章で説明しても、理解が深まらないので、使い方を紹介します。
isset.php
?php <strong><span style="color: #339966;">// 変数に値をいれてみる。</span></strong> $hoge = 'hoge'; if(isset($hoge)) // if(Isset($hoge) == true)という書き方の省略 { echo "変数hogeには、文字列hogeが入っている。\n" ; } else { echo "変数hogeには、nullが入ってる。\n"; } <strong><span style="color: #339966;">// 今度は、変数にnullを代入。</span></strong> $hoge2 = null; if(isset($hoge2)) { echo "変数hoge2には、文字列hogeが入っている。\n"; } else { echo "変数hogeには、nullが入っている。\n"; }
出力結果
/data/practice/php (*'-') php isset.php 変数hogeには、文字列hogeが入っている。 変数hoge2には、nullが入っている。
isset関数は他のPHPの関数と比べて、比較的わかりやすく、変数に値が入っているかnullが入っているかによって、true(真)かfalse(偽)を返すものです。 基本的な使い方は、上記ですが、もう少し詳しい使い方を他の関数と比べながら、見ていきたいと思います。
isset関数と類似している関数と比べてみよう。
ここで、isset関数と類似している数の中身に対して、検査していく関数とisset関数を比べてみたいと思います。
isset関数 と empty関数の違い
empty関数の定義
empty関数は、変数が空がどうかを検査する関数です。(PHP documentationより)。返す値は、isset関数と一緒で、true(真)かfalse(偽)のboolean型です。
それでは、使い方を見てみましょう。
?php $hoge = 'hoge'; if(empty($hoge)) { echo "変数hogeはからである"; } else { echo "変数hogeは空ではない。"; } $hoge2 = ''; if(empty($hoge2)) { echo "変数hoge2は空である"; } else { echo "変数hoge2は空ではない。"; }
実行結果
/data/practice/php (*'-') php empty.php 変数hogeは空ではない。 変数hoge2は空である。
変数hogeの中身が、空であるかそうではないか、それで、empty関数は、trueかfalseを返します。上のhogeは、中身があるので、false、下のhogeは、中身がないので、trueとなり、それに対する実行結果が出力されます。
ここで、is_set関数とempty関数の違いは、変数がnullか何も入っていないかです。ここで、一言言うべきことがあり、nullと空文字は、違うため、注意が必要です。詳しくは、一番下の表をご覧いただけると幸いです。
isset関数 と is_null関数の違い
is_null関数の定義
is_null関数は、指定した変数がnullかどうか調べる関数です。完璧にisset関数の逆のことをする関数です。使い方は下記になります。
?php $hoge = 'hoge'; if(is_null($hoge)) { echo "変数hogeには、nullが入っている。\n"; } else { echo "変数hogeには、nullが入っていない。\n"; } $hoge2 = null; if(is_null($hoge2)) { echo "変数hoge2には、nullが入っている。\n"; } else_ { echo "変数hoge2には。nullが入っていない。\n"; }
実行結果
/data/practice/php/technote (*'-') php is_null.php 変数hogeには、nullが入っていない。 変数hoge2には、nullが入っている。
isset関数との違いは、trueとfalseの結果を出す対象が逆ということです。isset関数なら、nullだと、false、is_null関数なら、nullだとtrueが返ってきます。
isset関数 と array_key_exists関数の違い
Array_key_exists関数は、指定したキーが配列のなかにあるかを調べる関数です。isset関数が指定した変数の中身をみる一方で、array_key_exists関数は、配列のキーを確認する関数です。さっそく使い方を見てみましょう。
array_key_exists関数の定義
出典: Edward Designer
array_key_exists.php
?php $search_array = array('first' = 'first_result', 'second' = 'second_result'); if(array_key_exists('first', $search_array)) { echo 'この配列にはfirstというキーがあります。'; } else { echo 'この配列には、firstというキーはありません。'; }
実行結果
/data/practice/php (*'-') php array_key_exists.php この配列にはhogeというキーがあります。
様々な内部関数を見てきましたが、それぞれをisset関数と比較しただけでは、理解度はあまり深まったとは言えないと思います。なので、変数を一定にして、それぞれの関数を使い、違いを見てみましょう。
isset関数の中身が…だったら?
では、早速、様々な関数を紹介してきたなかで、それぞれの関数を使い、理解度を深めるために、結果を比べてみましょう。
変数が空文字だったら?
var_noletter.php
?php $hoge = ''; var_dump(isset($hoge)); var_dump(empty($hoge)); var_dump(is_null($hoge));
出力結果
/data/practice/php/technote (*'-') php var_noletter.php bool(true) bool(true) bool(false)
今回は、var_dump関数という関数を使って、変数の中身を調べました。
変数が0だったら…?
では、今度は、変数の中身を0にしてみましょう。
var_zero.php
php $zero = 0; var_dump(isset($zero)); var_dump(empty($zero)); var_dump(is_null($zero));
出力結果
/data/practice/php/technote (*'-') php var_zero.php bool(true) bool(true) bool(false)
変数が配列だったら…?
var_noarray.php
?php $array = array(); var_dump(isset($array)); var_dump(empty($array)); var_dump(is_null($array));
出力結果
/data/practice/php/technote (*'-') php var_noarray.php bool(true) bool(true) bool(false)
結局、isset関数の結果が、falseのときは、変数がどうなっているとき?
定義に沿っている言い方かもしれませんが、isset関数はnullが入っているときにfalseを返します。nullとは、何もないという意味です。ここで、注意して欲しいことは、空の値を変数に代入すると何もない状態は違います。
変数の中身が、初期化(=中身が空なとき)でも変数に値が代入されているのでnullとはなりません。isset関数とempty関数の使いどきもそのような観点で変化があるので、状況によっての使いわけが必要になります。
この記事のハッシュタグ
三項演算子を使った、isset関数の使い方
便利な三項演算子の使い方
ここで、ちょっと話を変えて、三項演算子を紹介していきます。三項演算子とは、条件式の書き方の1つです。書式は
条件式 ? 式1: 式2
条件式が真の場合は、式1が実行され、偽の場合は式2が実行されます。
文章に書いても理解を得るのが難しいと思われるので、具体例を紹介していきます。
tenary_operator.php
?php $hoge = 'hoge'; $fuga = isset($hoge) ? $hoge : null; echo $fuga; $hoge2 = 'hoge2'; if(isset($hoge2)) { $fuga2 = $hoge2; } else { $fuga2 = null; } echo $hoge2;
実行結果
/data/practice/php/technote (*'-') php ternary_operator.php hogehoge2
変数$hogeには、変数が入っている(isset関数の結果が真である)ため三項演算子の式1が実行されます。それにより、変数fugaには$hogeの値つまりhogeが代入され実行結果はhogeとなります。
三項演算子を利用すると、下のようにif/else文を使う必要がないのでPHPを書き慣れた人は三項演算子を使うことをお勧めします。
$hoge2 = 'hoge2'; if(isset($hoge2)) { $fuga2 = $hoge2; } else { $fuga2 = null; } echo $hoge2;
isset関数の変数を複数にするのって、あり?なし?
ありです。何回も$isset関数を書かなくても大丈夫になり効率があがるのでぜひ使ってください。
?php $hoge = 'hoge'; $hoge2 = 'hoge2'; var_dump(isset($hoge)); var_dump(isset($hoge, $fuga));
出力結果
/data/practice/php/technote (*'-') php multiple_isset.php bool(true) bool(false)
ここで、気をつけて欲しいのは変数の全てに値が入っていないとfalseが返ってしまうことです。ですので、どの変数にnullが入っているかは下のように調べなければなりません。
?php $hoge = 'hoge'; $hoge2 = 'hoge2'; var_dump(isset($hoge)); var_dump(isset($hoge, $fuga)); $hoge3 = 'hoge3'; $hoge4 = null; $hoge_array = compact("hoge", "hoge2", "hoge3", "hoge4"); foreach($hoge_array as $key = $value) { echo '変数' .$hoge_array[$key] . 'は' . (isset($hoge_array[$key])). 'で、' . '中身は、' . $value . "です。\n"; }
出力結果
/data/practice/php (*'-') php multiple_isset.php bool(true) bool(false) 変数hogeは1で、中身は、hogeです。 変数hoge2は1で、中身は、hoge2です。 変数hoge3は1で、中身は、hoge3です。 変数はで、中身は、です。
もう一つ、大事なことがあります。isset関数は、boolean型を返すのでint型だと真のときに1を返します。
上記の方法は、自分もアプリを作成していて、この配列のこのキーには何が入っているのかと確認するときのデバックの作業でもよく使うのでぜひ使ってみてください。
さいごに
isset関数は、変数の中身を確かめる関数の1つですのでデータがしっかり転送されたかを確認する関数ですので、比較的に使用頻度が高くなります。
PHPの勉強を始める/PHPで開発する/PHPで開発経験が長い人の誰でも、復習しておくと開発作業が進むかと思われます。
isset関数だけではなく、その他の関数や自分が業務で使っている言語の内部関数を定期的に調べておくと技術も向上するのかなと思います。
こちらの記事もご参考ください。
→PHPのisset関数で困らない!5分でわかる類似関数比較
はじめての転職、何から始めればいいか分からないなら
「そろそろ転職したいけれど、失敗はしたくない……」そんな方へ、テックキャンプでは読むだけでIT転職が有利になる限定資料を無料プレゼント中!
例えばこのような疑問はありませんか。
・未経験OKの求人へ応募するのは危ない?
・IT業界転職における“35歳限界説”は本当?
・手に職をつけて収入を安定させられる職種は?
資料では、転職でよくある疑問について丁寧に解説します。IT業界だけでなく、転職を考えている全ての方におすすめです。
「自分がIT業界に向いているかどうか」など、IT転職に興味がある方は無料カウンセリングにもお気軽にお申し込みください。