仕事中にふと気づいたのでメモしておきます。
単純な空の配列は空と見なされます。
<?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!
こういう間違いがありそうで怖いな〜と思いました。