isset
との違いempty
は微妙ですが重要です。単独で使用する場合に最も関連性があります。変数が存在し、真の値 (たとえば、すべてがスペースまたは 0 ではない文字列) であることを確認する場合は、どちらも同じ意味で使用できます。
isset をいつ使用するか
isset
変数が定義されていて、null でないかどうかを知ることが重要な場合に使用します。
if (isset($maybeExistsMaybeNull)) {
// variable defined and is not NULL
}
いつ !empty を使用するか
!empty
変数が定義されており、真であるかどうかを知ることが重要な場合に使用します
if (!empty($mightBeEmpty)) {
// variable defined, and isn't "", " ", 0, "0" etc.
}
!empty
は、exists と is something の優れた省略形です。
array_key_exists を使用する場合
array_key_exists
キーが存在するかどうかを知ることが重要で、値が重要でない場合に使用します。
if (array_key_exists('something', $array)) {
// $array['something'] exists, could be literally anything including null
}
isset を使用しない場合
コードが次のようになっている場合:
if (isset($something) && $something) {
// code is shorter with !empty
}
!empty を使用しない場合
コードが次のようになっている場合:
if (!empty($something) && $something === "") {
// you meant isset. this is unreachable.
}
次に、実行できないコードを書いています
エラーをスローするコードはエラーが発生しやすい
無視している通知/警告を発行するコードを記述しないでください。たとえば、質問では:
if((isset($_GET[example]))&&($_GET['example']=='somevalue')){ ... }
example の最初の使用法は、宣言されていない定数です。または、宣言されていません-define('example', "foo");
コード内のどこかにある場合はどうなりますか。
if($_GET['example']=='somevalue'){ ... }
URL に含まれていない場合は?example=..
、通知も発行されます。
エラーを表示せずにコードを書くということは、最初のような間違いを非常に簡単に見逃す可能性があることを意味します。
コンテキスト: isset と !empty は同等です
上記の例では、これら 2 つの言語構造はまったく同じように動作します。
一方が他方と異なる動作をすることはなく、変数が未定義の場合にどちらも通知を発行せず、両者の間に測定可能なパフォーマンスの違いはありません。