我想能夠從數組中生成一些常量。所以像這樣:是否可以使用變量名定義常量?
foreach ($array as $key => $value) {
define($key,$value);
}
有沒有一種簡單的方法來做到這一點?
我想能夠從數組中生成一些常量。所以像這樣:是否可以使用變量名定義常量?
foreach ($array as $key => $value) {
define($key,$value);
}
有沒有一種簡單的方法來做到這一點?
您已經在您的代碼中執行此操作。或者你是這個意思?
$array = array("sparkles" => "pretty");
foreach($array as $key=>$value) {
${$key} = $value;
}
echo $sparkles; //pretty
這些是變量,而不是常量 – 2013-02-08 19:46:58
它按我寫的方式工作。我之前沒有必要這樣做,並且在代碼的另一部分中存在另一個錯誤,導致它無法正常工作。我覺得很愚蠢,假設它不能像我寫的那樣工作,但感謝所有的幫助。 – 2013-02-08 19:57:15
你也可以嘗試使用extract
函數。它產生相同的結果(幾乎)在NJK的答案
哦,downvoting ...好吧,它不會創建任何常量。要在運行時創建常量,您可以嘗試使用'eval'構造 - 但這不是一個好主意。你也可以看看我對類似問題的回答:http://stackoverflow.com/questions/12113663/dynamic-constants-in-php/12117642#12117642 – 2013-02-08 19:52:19
eval與創建常量有什麼關係? – Supericy 2013-02-08 19:57:13
請點擊鏈接... – 2013-02-08 19:59:53
的選擇,如果你有許多常量定義,並安裝APC:
$constants = array(
'ONE' => 1,
'TWO' => 2,
'THREE' => 3,
);
apc_define_constants('numbers', $constants);
(直例子從apc_define_constants
)
假設PHP 5.3或更高版本,你可以這樣做:
array_walk($array, function ($value, $key) {
define($key, $value);
});
或
array_walk(array_flip($array), 'define');
但說實話,我只想用當前的方法。
我看到沒有必要使用這種類型的東西常量,爲什麼不只是使用變量? – David 2013-02-08 19:44:27
你的代碼工作正常http://codepad.viper-7.com/eeXE6J – 2013-02-08 19:48:03
看看http://stackoverflow.com/questions/12113663/dynamic-constants-in-php/12117642 – 2013-02-08 19:53:36