PHP には、変数の存在を判断する isset() 関数が用意されています。ただし、ドキュメントで説明されているように、未設定の変数と NULL に設定された変数を区別できません。
制限のある代替アプローチ
この制限を克服する 1 つの試みは、次のとおりです。 :
<code class="php">if (isset($v) || @is_null($v)) {...}</code>
しかし、is_null() も同様の問題に直面しており、未設定の場合は TRUE を返します。変数。さらに、@($v === NULL) は @is_null($v) と同じように動作するため、使用できなくなります。
信頼できる解決策: array_key_exists()
変数の存在を確認する信頼性の高い方法として、array_key_exists() を検討してください。グローバル変数に適用すると、存在しない変数と NULL に設定された変数が効果的に区別されます。
区別のデモ
次の例を考えてみましょう:
<code class="php">$a = NULL; var_dump(array_key_exists('a', $GLOBALS)); // TRUE var_dump(array_key_exists('b', $GLOBALS)); // FALSE</code>
出力は、array_key_exists() が次の存在を正確に識別していることを示しています。 NULL に設定されていても $a です。
結論
isset() と is_null() は変数の存在テストの部分的なサポートを提供しますが、array_key_exists() はさらに多くの機能を提供します。正確かつ包括的なソリューション。このメソッドは、グローバル スコープとローカル スコープの両方で、未設定の変数と NULL に設定された変数を正しく区別します。
以上がPHP で変数の存在を確実にテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。