2011-06-22 16 views
3

私は定数を= ''に設定すると、 定数に何かがあるかどうかを確認するにはどうすればいいですか?定数のためのissetが定義されていない場合は?

defined()、私はそれが定義されているので isset()は定数

では動作しません希望のように動作しませんがどんな簡単な方法はありますか?

+3

あなたが話している言語を示したいと思うかもしれません... –

+0

これはPHPに関連していますか? –

+0

はい、PHPです。申し訳ありません。 – Cameleon

答えて

10

manualは、isset()は、 "[...]変数が設定されていてNULLでないかどうかを返します。

定数は変数ではないため、定数を確認することはできません。あなたは、しかし、これを試してみてください:あなたの定数は、空の文字列として定義されている場合

define('FOO', 1); 

if (defined('FOO') && 1 == FOO) { 
// .... 
} 

だから、あなたが最初にそれが実際に definedだ場合は、チェックする必要があり、その後、その値( '' == MY_CONSTANT)をチェックします。

0

何かがあるかどうかをチェックするために(PHP 5.5以降)空の関数を使用できます。エラーを避けるために、内部にあるかどうかをチェックします。

if(defined('FOO')&&!empty(FOO)) { 
    //we have something in here. 
} 

空も '空'

として( '0' のように、0と他のものが多くのためhttp://php.net/manual/de/function.empty.phpを参照)最もfalse様式を評価するので、あなたは試すことができます:

if(defined('FOO') && FOO) { 
    //we have something in here. 
} 

をこれはおそらくより多くのバージョンで動作するはずです(おそらくどこでもヨーダ条件を走らせることができます)

もっと厳密にチェックするには、

次を使用します(そして、それは一定の定義されたシステムではありません)あなたは定数を割り当てると仮定すると、
if(defined('FOO') && FOO != '') { 
    //we have something in here. 
} 
0

if(array_key_exists("MY_CONSTANT", get_defined_constants(true)['user'])){ 
    echo MY_CONSTANT; //do stuff 
} 

get_defined_constants(true)の配列結果は定義されている定数の配列の全てであるので、これは動作しますあなたが定義するものはサブアレイ['user']に保存されます。

manualを参照してください。

関連する問題