これはメモです

それ以上でもそれ以下でもないのです

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

参考