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