PHP / JSの変数が存在するかどうかを確認します

PHPとJavaScriptの変数を日常的に操作する場合、変数が空であるかどうかというクエリに出くわすことがよくあります。 チェックの目的で、ネイティブ関数とその違いを知ることは価値があります。 迷惑なことに、変数が存在するかどうかを直感的に確認する簡単な方法はありません。 以下のマトリックスは、これが何を意味するかを示しています。 ただし、必要なものは小さなヘルパー関数で後付けすることができます。


PHP

  === null == null is_null isset empty if/else ternary count > 0 == '' === '' @__x
$a true true true false true false false false true false false
null true true true false true false false false true false false
[] false true false true true false false false false false false
0 false true false true true false false true true false true
1 false false false true false true true true false false true
-1 false false false true false true true true false false true
'' false true false true true false false true true true false
' ' false false false true false true true true false false false
str false false false true false true true true false false true
[0,1] false false false true false true true true false false true
[0] false false false true false true true true false false true
new stdClass() false false false true false true true true false false false

__xの実装:

740550c6b3d2b9ae03e4d220eb08e6e3

ヘルパー関数__xは、エラー制御演算子@を使用して呼び出されます。これは、以前に定義されていない変数もチェックできるようにするために、通常は推奨されません。

JavaScript

  === null == null typeof input === 'undefined' if/else ternary length > 0 == '' === '' __x
$a false true true false false type error false false false
null true true false false false type error false false false
[] false false false true true false true false false
0 false false false false false false true false true
1 false false false true true false false false true
-1 false false false true true false false false true
'' false false false false false false true true false
' ' false false false true true true false false false
str false false false true true true false false true
[0,1] false false false true true true false false true
[0] false false false true true true false false true
new Object() false false false true true false false false false

__xの実装:

740550c6b3d2b9ae03e4d220eb08e6e3

バック