🦔
PHPで if (isset($x) && !empty($x)) の値チェック
isset と !empty を併用する必要あるか...?
時々、PHPのソースコードを見ていると値存在チェックにて以下のような判定を見かけます。
if (isset($x) && !empty($x)) {
// some process..
}
この場合のissetは要るのかいつも疑問に思っていました。
empty だけで十分
上記の場合issetは不要のようです。以下で問題ないみたいです。
if (!empty($x)) {
// some process..
}
詳細
以下 PHP Manual より
x)とするとE_NOTICE レベルのエラーが発生します。代わりに、empty()や isset()を使うか、あるいは変数を初期化するように してください。 xが定義されていない状態で単に if (
また、empty() は本質的に
!isset($x) || $x == false と同じことを簡潔に記述しているだけ
です。
つまり、$xが未定義でもnoticeエラーは発生しないので、display_errorsの設定を下げていても判定処理は意図したとおりに行ってくれます。
Refarence
・PHP 型の比較表
Discussion