PHPのempty関数の使い方と挙動確認11パターン!

PHP

PHPのempty関数の使い方や挙動について書いています。
書いているコードはPHPバージョン8で確かめました。

公式の関数ドキュメントは下記になります。
PHP: empty - Manual

empty関数について

PHPでempty関数を使うと、引数で渡した内容が空であるか判定してくれます。
空の場合はtrueになって、値が存在する場合はfalseになります。

if (empty($hoge)) {
  // $hoge変数が空だった場合の処理...
}

上記のように使用して、空であるかどうかの判定に使えます。

empty関数を使った挙動確認

emptyを使ったサンプルを見てみます。実際にいろんな値を入れて検証してみました。

nullが入力されている

変数にnullが入っている(empty(null))の場合です。
結果は「valueは空です。」になります。

<?php
$value = null;

if (empty($value)) {
    echo "valueは空です。";
} else {
    echo "valueに値が入っています。";
}

0が入力されている

変数に0が入っている(empty(0))の場合です。
結果は「valueは空です。」になります。

<?php
$value = 0;

if (empty($value)) {
    echo "valueは空です。";
} else {
    echo "valueに値が入っています。";
}

空配列が入力されている

変数に空配列が入っている(empty([]))の場合です。
結果は「valueは空です。」になります。

<?php
$value = [];

if (empty($value)) {
    echo "valueは空です。";
} else {
    echo "valueに値が入っています。";
}

何も設定していない変数が入力される

変数($value)に何も設定されていない場合です。
結果は「valueは空です。」になります。

<?php
if (empty($value)) {
    echo "valueは空です。";
} else {
    echo "valueに値が入っています。";
}

空文字列が変数に入力される

変数に空文字列が入っている場合です。
結果は「valueは空です。」になります。

<?php
$value = "";

if (empty($value)) {
    echo "valueは空です。";
} else {
    echo "valueに値が入っています。";
}

0の文字列が変数に入力される

変数に0の文字列が入っている場合です。
結果は「valueは空です。」になります。

<?php
$value = "0";

if (empty($value)) {
    echo "valueは空です。";
} else {
    echo "valueに値が入っています。";
}

falseが変数に入力される

変数にfalseが入っている場合です。
結果は「valueは空です。」になります。

<?php
$value = false;

if (empty($value)) {
    echo "valueは空です。";
} else {
    echo "valueに値が入っています。";
}

trueが変数に入力される

変数にtrueが入っている場合です。
結果は「valueに値が入っています。」になります。

<?php
$value = true;

if (empty($value)) {
    echo "valueは空です。";
} else {
    echo "valueに値が入っています。";
}

何らかの文字列が変数に入力される

変数に何らかの文字列が入っている場合です。
結果は「valueに値が入っています。」になります。

<?php
$value = "hoge";

if (empty($value)) {
    echo "valueは空です。";
} else {
    echo "valueに値が入っています。";
}

配列が変数に入力される

変数に値のある配列が入っている場合です。
結果は「valueに値が入っています。」になります。

<?php
$value = ["apple"];

if (empty($value)) {
    echo "valueは空です。";
} else {
    echo "valueに値が入っています。";
}

クラスのインスタンスが変数に入力される

変数にクラスのインスタンスが入っている場合です。
結果は「valueに値が入っています。」になります。

<?php
class Test {
}

$value = new Test();

if (empty($value)) {
    echo "valueは空です。";
} else {
    echo "valueに値が入っています。";
}

empty関数の挙動まとめ

サンプルコードで確認した挙動をまとめると、下記のようになりました。

入力値  返り値
null true
0 true
[] true
$value true
“” true
“0” true
false true
true false
“hoge” false
[“apple”] false
new Class() false

文字列の”0″がempty判定されて、trueになるのは何となく意外でした。
何も入れていないクラスのインスタンスもtrueになりました。

この辺に気をつけて使うと良さそうですね。

コメント

タイトルとURLをコピーしました