by shigemk2

当面は技術的なことしか書かない

emptyとissetの違いについて

emptyは変数が空かどうかを調べ、
issetは変数に値がセットされているかどうかを調べる。

<?php
$array = array(
  "" => "");
if(empty($array)) print_r("ほげ" . "\n");
if(isset($array)) print_r("homu" . "\n");

$array = array(
  "hoge" => "");

if(empty($array)) print_r("ほげ1" . "\n");
if(empty($array['hoge'])) print_r("ほげ1" . "\n");
if(isset($array)) print_r("homu1" . "\n");

$array = array();
if(empty($array)) print_r("ほげ2" . "\n");
if(isset($array)) print_r("homu2" . "\n");

?>

homu
ほげ1
homu1
ほげ2
homu2

連想配列の場合、キーも値も定義されていなくてもemptyはfalseになる。
一方issetは変数そのものが定義されているからtrueとなる。