empty関数について

empty関数は、引数の変数が空かどうかをチェックします。つまり空でないか、0でない値であれば FALSE を返します。

空であると判断するのは以下の場合です。

""空文字列
00 は整数
"0"0は文字列
NULLNULL値
FALSEboolean値
array()空の配列
var $var;変数が宣言されているが、クラスの中で値が設定されていない

引数の変数をチェックする関数なので、引数に変数以外が渡されるとFatalエラーとなります。

if (empty(trim($test))) {
  echo "empty true";
}else{
  echo "empty false";
}

Fatal error: Can't use function return value in write context

というエラーが出ます。

また入力チェックのときに使用するのは注意が必要です。

if (empty($test)) {

if (!isset($test) || !$test) {

と等価です。

例えば次の場合。

$test = strval("0");
if (empty($test)) {
  echo "empty true";
}else{
  echo "empty false";
}

if (!isset($test) || !$test) {
  echo "not isset or blank";
}else{
  echo "isset and not blank";
}

『文字列の0』はemptyだとtrue、if(!$test)でもtrueです。
つまり入力値が『文字列の0』の場合は、空と等価になります。

値が空であることを判断するには、例えば次のようにします。

if (!isset($test) || (!$test && strlen($test)==0)) {

同様にemptyを使う場合はstrlen($test)==0の条件を追加するだけでは間違いです。

if (empty($test) && strlen($test)==0) {

は、変数$testが宣言されていないと

Notice: Undefined variable: test

というエラーが出ます。

empty関数の場合は次のようにするのが正しいです。

if (empty($test) && (!isset($test) || strlen($test)==0)) {

emptyでは、いくつかの種類が判定されるので正確にどの文字が判定されたのかを判断するには === を使用します。

関連記事

スポンサーリンク

page-break-before 印刷の改ページ箇所を指定する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る