【PHP】!empty()とisset()関数の違い

PHPのサンプルコードを読んでいると、!empty() とisset()関数が頻繁に出てきます。

!empty()は、emptyの否定であり、 “空ではない”という意味になります。

他方、isset()は、変数や配列が“セットされている”という意味です。

この二つは、似たような意味であることから混同して使われているようにも見受けられます。

そこで、一度、公式マニュアルで確認してみました。

empty() :

http://jp2.php.net/manual/ja/function.empty.php

isset() :

http://jp2.php.net/manual/ja/function.isset.php

違いを要約してみます。

emptyは、0や””の空文字がセットされていても、空と評価します。

他方、issetは、0や””がセットされていれば、空でないと評価します。

つまり、emptyとissetで違いが出てくるのは、0や空文字が変数に代入されている場合というわけです。

マニュアルのサンプルコードを少しいじって検証してみます。

<?php
$var = 0;

// $var が0(空)なので条件はfalseと評価されます
if (!empty($var)) {
echo 'emptyは0を空と評価しtrue、!の否定によりfalseになり非表示';
}
 

// $var が設定されているので条件はtrueと評価されます
if (isset($var)) {
echo 'issetは0がセットされていると評価しtrueなので表示';
}
?>

少しややこしいので、挙動に自信が無いときは、わかりやすいissetを使う方が無難といえそうです。

カテゴリー: PHP パーマリンク

コメントを残す

メールアドレスが公開されることはありません。