2013-02-08 111 views
-2

我想能夠從數組中生成一些常量。所以像這樣:是否可以使用變量名定義常量?

foreach ($array as $key => $value) { 
    define($key,$value); 
} 

有沒有一種簡單的方法來做到這一點?

+0

我看到沒有必要使用這種類型的東西常量,爲什麼不只是使用變量? – David 2013-02-08 19:44:27

+2

你的代碼工作正常http://codepad.viper-7.com/eeXE6J – 2013-02-08 19:48:03

+0

看看http://stackoverflow.com/questions/12113663/dynamic-constants-in-php/12117642 – 2013-02-08 19:53:36

回答

0

您已經在您的代碼中執行此操作。或者你是這個意思?

$array = array("sparkles" => "pretty"); 

foreach($array as $key=>$value) { 
    ${$key} = $value; 
} 

echo $sparkles; //pretty 
+1

這些是變量,而不是常量 – 2013-02-08 19:46:58

+0

它按我寫的方式工作。我之前沒有必要這樣做,並且在代碼的另一部分中存在另一個錯誤,導致它無法正常工作。我覺得很愚蠢,假設它不能像我寫的那樣工作,但感謝所有的幫助。 – 2013-02-08 19:57:15

-1

你也可以嘗試使用extract函數。它產生相同的結果(幾乎)在NJK的答案

參見:http://php.net/manual/en/function.extract.php

+0

哦,downvoting ...好吧,它不會創建任何常量。要在運行時創建常量,您可以嘗試使用'eval'構造 - 但這不是一個好主意。你也可以看看我對類似問題的回答:http://stackoverflow.com/questions/12113663/dynamic-constants-in-php/12117642#12117642 – 2013-02-08 19:52:19

+0

eval與創建常量有什麼關係? – Supericy 2013-02-08 19:57:13

+0

請點擊鏈接... – 2013-02-08 19:59:53

0

假設PHP 5.3或更高版本,你可以這樣做:

array_walk($array, function ($value, $key) { 
    define($key, $value); 
}); 

array_walk(array_flip($array), 'define'); 

但說實話,我只想用當前的方法。

相關問題