2011-06-22 33 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. 
} 

因爲空還評估最false般的表現(如 '0',0和其他的東西看http://php.net/manual/de/function.empty.php更多)爲 '空'

你可以試試:

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