LoginSignup
1
0

More than 5 years have passed since last update.

【PHP】配列の空判定〜キーが指定されると、値が空でも配列は空と見なされない〜

Posted at

仕事中にふと気づいたのでメモしておきます。

単純な空の配列は空と見なされます。

<?php
$member = array();

if ($member) {
    echo 'success!';
} else {
    echo 'error!';
}

// 出力結果:error!

しかし、キーが指定され値が空の状態だと、配列自体は空と見なされません。

if (!empty($member2))if (isset($member2))を使用した場合も、同じ判定でした。(こちらは変数の判定ですが。)

<?php
$member2 = array('id' => '', 'name' => '');

if ($member2) {
    echo 'success!';
} else {
    echo 'error!';
}

// 出力結果:success!

ちなみにvar_dumpするとこうなります。
配列自体は存在している・・・という解釈なのでしょうか?

<?php
var_dump($member2);

// 出力結果:
// array(2) {
//   ["id"]=>
//   string(0) ""
//   ["name"]=>
//   string(0) ""
// }

もちろん要素を直接指定すれば、空と判定されます。

<?php
$member2 = array('id' => '', 'name' => '');

if ($member2['id']) {
    echo 'success!';
} else {
    echo 'error!';
}

// 出力結果:error!

こういう間違いがありそうで怖いな〜と思いました。

1
0
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
1
0