我想知道你是否可以从另一个变量构造一个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函数。
还是我只是坚果?
答案 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文件,因为这可能会破坏您自己的变量并用其他数据覆盖它们。