在php中同时定义多个结果

时间:2013-02-25 00:08:51

标签: php smarty

我有$config变量,里面有数组。在smarty我分配变量如下:

$smarty->assign('config', $config);

当我打电话时,我使用了这个:{$config.wateverarrayyouwant} 现在我想用php做同样的事情。我想以同样的方式define他们。如何在$config中仅在一行中定义所有数组? 我只知道如何使用它来一次定义一个变量:

define('wateverarrayyouwant', $config['wateverarrayyouwant']);

我尝试将wateverarrayyouwant更改为变量,因为它可以是任何数组:

define('$wateverarrayyouwant', $config[$wateverarrayyouwant]);

但上面的代码不起作用。什么是实现我想要的好方法?

3 个答案:

答案 0 :(得分:2)

如果要为数组中的每个键值对创建define,可以使用:

<?php
foreach($config as $key => $value) {
    define($key, $value);
}

但是我会注意到你不能define数组值,所有define都必须是标量:

  

常数的值;只允许标量和空值。标量值是整数,浮点数,字符串或布尔值。

如果您查看OP的答案以进一步解释他想要实现的目标,可以通过以下方式完成:

<?php
foreach($config as $key => $value){
    $$key = $value;
}
?>

答案 1 :(得分:1)

这个问题无法完成。因为我试图将变量定义为常量。我只是想着如何减少变量的字母,从来没有尽管我最好不要管它们。从逻辑上讲,为什么有人需要将$config[$wateverarrayyouwant]更改为wateverarrayyouwant。我只想着保持一个整洁的代码。但现在我正在考虑它...最好保持原样:$config[$wateverarrayyouwant]

这可以通过以下方式完成:

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

答案 2 :(得分:0)

您甚至可能不想在此处使用define。 define用于创建constants而不是普通变量,并带有某些内涵:

  • 它们在剧本的生命中是不可变的
  • 他们必须是标量

如果你只是想要一个数组变量,那就用普通的方法定义它:

$whatever = array(
  'key1' => 'value1'
);