こんにちは、さち です。
先日、「PHP」を書いているときに、「定義されている」&「空でない配列」という条件を書きたいことがありました。
言い換えると、『「未定義」または「空の配列」は除く』という条件です。
isset() を使うと「空の配列」が true になるので、別の条件を書く必要があり、あまり気が進みません。
ということで、empty() を使って実装してみます。
サンプルコード
error_reporting(0);// テストのため未定義Warningを非表示
// 判別用関数
function isNonEmptyArray($val) {
if(!empty($val)) {
echo 'true';
} else {
echo 'false';
}
}
$arr = [
'102期'=> ['梢', '綴理', '慈'],
'101期'=> ['沙知'],
'100期'=> []
];
// 値がある配列
isNonEmptyArray($arr['102期']); // true
isNonEmptyArray($arr['101期']); // true
// 空の配列
isNonEmptyArray($arr['100期']); // false
// 未定義
isNonEmptyArray($arr['0期']); // false
empty() を使うと、「値がある配列」は false になり、「空の配列」は true になります。また、「未定義」の変数の場合も true になります。
今回は、!empty() としているので、true と false は逆になっています。
!empty(), isset() の真偽値まとめ
| 受け取る値 | !empty() |
isset() |
|---|---|---|
[1, 2, 3](配列) |
true | true |
[](空の配列) |
false | true |
'string'(文字列) |
true | true |
''(空の文字列) |
false | true |
1(数値) |
true | true |
0 '0'(ゼロ) |
false | true |
undefined(未定義) |
false | false |

コメント