2017-08-25 83 views
-1

我知道,自PHP 5.6你可以設置一個常數作爲一個數組,但它可以動態地建立一個?動態添加到php的const數組中嗎?

這工作:

const FIELDS = array("email","firstName"); 

但我想運行填充常數,而不是一個查詢:

while($row = mysqli_fetch_assoc($results)) { 
    const FIELDS[] = $row['field']; 
} 

但是,這並不工作。我也試過:

while($row = mysqli_fetch_assoc($results)) { 
    $array[] = $row['field']; 
} 
const FIELDS = $array; 

但是這也行不通。有沒有辦法做到這一點?還是數組必須被硬編碼設置爲常量?

+0

如何使用'define(「FIELDS」,$ array)'?這需要PHP7。但一個常數就是這樣 - 一個常數!爲什麼你不能使用一個變量呢?是否在課堂上使用? – Qirel

+0

常數是恆定的。如果它改變它是一個變量。 –

+0

@AlexBlex我明白了,而且我並沒有試圖在使用過程中使其變得可變,只需在創建時從遠程源獲取值 – Matt

回答

0

我完全承認,這是一個不正確的使用恆定的,而我從此改變它只需使用一個變量,但是 - 這是我怎麼沒發現你可以完成它:

while($row = mysqli_fetch_assoc($results)) { 
    $array[] = $row['field']; 
} 
DEFINE('FIELDS', serialize($array)); 
print_r(unserialize(FIELDS)); 

沒有首先序列化數組,我無法獲得DEFINE方法的工作(也許它在7.0中有所不同)。這需要您在輸出之前將其反序列化。

0

嘗試使用define('FIELDS', $array);。這使您可以使用變量而不是文字字符串。 下面有一些更多的信息有關define VS constdefine() vs const

這兩種方式之間的根本區別在於常量 在編譯時定義的常量,而定義在運行時 定義它們。