0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

新たに気づいたissetとemptyの違い(PHP)

Posted at

タイトルのとおりですが、emptyとissetの違いで今さらながらに気づいた部分があったので、メモとして残しておきます。

やりたかったこと

  • $hogeが空の配列
    • falseにしたい
  • $hoge['foo']がtrue
    • trueにしたい
  • $hoge['foo']がfalse
    • falseにしたい

上記の条件を満たしたかった

結論

$hoge = array('foo' => false);
if (!empty($hoge['foo'])) {
  echo 'true';
} else {
  echo 'false';
}
// falseが表示される

$hoge = array('foo' => false);
if (isset($hoge['foo'])) {
  echo 'true';
} else {
  echo 'false';
}
// trueが表示される

issetだと$hoge['foo']がfalseのときでもtrueが返ってしまいます…
!emptyだとちゃんとfalseが返されるんですね〜。

理由

issetの動作

  • isset関数は、変数が設定されており、値がnullでない場合にtrueを返す
  • false、空文字列、0、空の配列なども「設定されている」とみなされるため、issetはこれらの場合にtrueを返す

emptyの動作

  • empty関数は、変数が空(null、false、空文字列、0、0.0、空の配列、または未設定)である場合にtrueを返す
  • これらの値でない場合にfalseを返す

上記の違いがあるため、今回は!emptyを使用するとやりたいことが実現できました。

以上、誰からの参考になれれば幸いです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?