転職実績No.1🔰エンジニアスクール
転職実績No.1🔰エンジニアスクール

PHPのisset関数で困らない!5分でわかる類似関数比較

更新: 2021.07.09

あなたはPHPで開発作業する時に、デバックの作業で変数の中身や関数の結果を調べるなど、開発に思ったよりも時間がかかっていることで悩んでいませんか?この記事を読むことで、あなたは、PHPのisset関数とそれに類似した関数を知り、変数の中身や関数の結果を知ることができ、PHPでの開発の効率が向上します。実際に私は、正確に、早くデバック作業をすることができるようになりました。アイキャッチ画像出典: PHP.net

今回は、自分が比較的に長く勉強しているPHP(webアプリに使われる言語の一種)という言語で、isset関数という関数について、記事を書いていきます。

isset関数の定義

php-7-features-that-will-woo-every-php-fan

出典: php.gang.com

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関数の定義

download 

出典: Quantum3d

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関数の違い

timthumb

出典: Kelly Dun

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関数の定義

php4
出典: 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関数の中身が…だったら?

question-mark_318-52837

出典: Freepik

では、早速、様々な関数を紹介してきたなかで、それぞれの関数を使い、理解度を深めるために、結果を比べてみましょう。

変数が空文字だったら?

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分でわかる類似関数比較

↑目次へ戻る

【転職実績No.1👑】年収アップと自由な働き方を実現したいならITエンジニア転職!

こんな希望はありませんか?

  • もっと年収アップできる仕事がしたい
  • 時間や場所に縛られず自由に働きたい
  • 専門スキルで手に職をつけたい

という方は、ITエンジニア転職がおすすめです

テックキャンプなら、完全未経験🔰でも大丈夫!プログラミング学習〜エンジニア転職支援、副業案件獲得まで個別にサポートします👌

さらに給付金活用で受講料最大70%OFF

※2020年12月時点 3.テックキャンプ エンジニア転職は経済産業省の第四次産業革命スキル習得講座の認定も受けており、条件を満たすことで支払った受講料の最大70%(最大56万円)が給付金として支給されます

興味がある方は、以下よりIT転職のプロにキャリアのお悩み相談から始めてみましょう!

まずは無料で相談してみる

この記事を書いた人

あなたの理想のキャリアに合わせた、テックキャンプの2つのサービス

Advertisement