1

我有$config里面有数组的变量。在 smarty 中,我像这样分配变量:

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

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

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

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

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

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

4

3 回答 3

2

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

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

但是我会注意,您不能define排列值,所有define' 都必须是标量:

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

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

<?php
foreach($config as $key => $value){
    $$key = $value;
}
?>
于 2013-02-25T00:11:09.860 回答
1

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

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

foreach($config as $key => $value){
    $$key = $value;
}
于 2013-02-25T06:01:29.667 回答
0

您甚至可能不想在这里使用定义。define用于创建constants非普通变量,并带有某些含义:

  • 它们在脚本的生命周期内是不可变的
  • 它们必须是标量

如果你只想要一个数组变量,那么像往常一样定义它:

$whatever = array(
  'key1' => 'value1'
);
于 2013-02-25T00:33:27.363 回答