PHPで連想配列の値が空か判定する
ちょっと詰まったのでメモ。
$array
とかisset()
で判定できるのかなと思いきや出来なかった。
<?php $array = [ 'elm1' => '', 'elm2' => [], ]; var_dump(!$array); // false var_dump(!isset($array)); // false
調べたところ、array_filter()
の第二引数(コールバック関数)を省略することでフィルタリングができるとのこと。
コールバック関数が与えられなかった場合、 array のエントリの中で空のものはすべて削除されます。 この場合の「空」の定義については、empty() 関数を参照して下さい。
PHP: array_filter - Manual
<?php $array = [ 'elm1' => '', 'elm2' => [], ]; $filtered = array_filter($array); var_dump($filtered); // [] var_dump(!$filtered); // true