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

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になりました。
この辺に気をつけて使うと良さそうですね。

コメント