是否可以使用变量名定义常量?

时间:2013-02-08 19:42:30

标签: php constants

我希望能够从数组中生成一些常量。所以像这样:

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

有一种简单的方法吗?

4 个答案:

答案 0 :(得分:0)

您已在代码中执行此操作。或者你的意思是这样吗?

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

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

echo $sparkles; //pretty

答案 1 :(得分:0)

另一种方法是,如果要定义很多常量,并安装APC:

$constants = array(
    'ONE'   => 1,
    'TWO'   => 2,
    'THREE' => 3,
);
apc_define_constants('numbers', $constants);

(来自apc_define_constants的直接例子)


修改:an interesting read about performance

答案 2 :(得分:0)

假设PHP 5.3或更高版本,你可以这样做:

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

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

但说实话,我会使用你当前的方法。

答案 3 :(得分:-1)

您也可以尝试使用extract功能。它产生的结果(差不多)与njk的回答相同

请参阅:http://php.net/manual/en/function.extract.php