【PHP】配列の空判定〜キーが指定されると、値が空でも配列は空と見なされない〜
仕事中にふと気づいたのでメモしておきます。
単純な空の配列は空と見なされます。
<?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!
こういう間違いがありそうで怖いな〜と思いました。
Author And Source
この問題について(【PHP】配列の空判定〜キーが指定されると、値が空でも配列は空と見なされない〜), 我々は、より多くの情報をここで見つけました https://qiita.com/yukibe/items/6b5b944cc5c559a3f501著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .