我有$config
变量,里面有数组。在smarty我分配变量如下:
$smarty->assign('config', $config);
当我打电话时,我使用了这个:{$config.wateverarrayyouwant}
现在我想用php做同样的事情。我想以同样的方式define
他们。如何在$config
中仅在一行中定义所有数组?
我只知道如何使用它来一次定义一个变量:
define('wateverarrayyouwant', $config['wateverarrayyouwant']);
我尝试将wateverarrayyouwant更改为变量,因为它可以是任何数组:
define('$wateverarrayyouwant', $config[$wateverarrayyouwant]);
但上面的代码不起作用。什么是实现我想要的好方法?
答案 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'
);