从php中的其他变量动态组合变量

时间:2011-08-23 04:21:25

标签: php

我想知道你是否可以从另一个变量构造一个PHP变量。

我想根据另一个变量的输出构建一个动态变量。

$cf = new RecursiveDirectoryIterator(dirname(__DIR__) . DS . "configuration");

foreach (new RecursiveIteratorIterator($cf) as $filename => $file) {
    if ($cf->getFilename() != "." && $cf->getFilename() != "..") {
        $ex = explode(".", $filename);
        $_.$ex[0] = parse_ini_file($filename, true);
    }
}

在上面的代码中,我想查看我的配置文件夹并输出类似的内容。

假设我们在配置文件夹

中有db.ini和theme.ini

所以输出有望看起来像

$_db = parse_ini_file("db.ini", true);
$_theme = parse_ini_file("theme.ini", true);

我认为可能将变量连接在一起我可以创建一个新变量; - )

方案是我想将尽可能多的.ini文件转储到我的配置文件夹中,并让我的脚本为我加载$ _变量,并为该文件加载了parse_ini_file函数。

还是我只是坚果?

3 个答案:

答案 0 :(得分:2)

动态变量

您想要做的是什么,它们被称为变量变量:

http://php.net/manual/en/language.variables.variable.php

例如

$sql = "my query";
$variable = "sql";
echo ${$variable};

<强>输出

my query

因此,对于您的示例,只需将其更改为

即可
$_{$ex[0]} = parse_ini_file($filename, true);

更好的方式

然而,固有的问题是跟踪你的ini文件以及它们存储的变量会变得更加困难。更简洁的方法是使用关联数组。

http://au.php.net/manual/en/function.array.php

所以你的代码看起来像这样:

$name = pathinfo($filename, PATHINFO_FILENAME); //mildly more accurate then explode
$ini[$name] = parse_ini_file($filename, true);

然后在你看之后只需print_r $ ini来查看结果

print_r($ini);

答案 1 :(得分:0)

尝试

$name = '_' . $ex[0];
$$name = parse_ini_file($filename, true);

答案 2 :(得分:0)

你可以这样做:

// Inside the loop.
$ex = explode(".", $filename);
$variable = '_' . $ex[0];
$$variable = parse_ini_file($filename, true);

这可以做你想要的。但是,请注意,如果$ex[0]不是语法上有效的PHP变量名称(如"foo.bar"),则变量将不可访问,除非通过动态变量机制($varname = "foo.bar"; $value = $$varname;)。

另外,请确保您信任您正在阅读的INI文件,因为这可能会破坏您自己的变量并用其他数据覆盖它们。