【PHP】 「定義済み」&「空でない配列」という条件をシンプルに書く

この記事は約2分で読めます。
サーバー等の運営維持費を得るため記事内に自動表示される広告が含まれています

コーディングのイメージ

こんにちは、さち です。

先日、「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() の挙動(※後述)に注意しましょう

!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

 

 

 

 

コメント

タイトルとURLをコピーしました