我想知道你是否可以从另一个变量构造一个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函数。
还是我疯了?
动态变量
你想做的是可能的,他们更被称为可变变量:
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);
Try
$name = '_' . $ex[0];
$$name = parse_ini_file($filename, true);
你可以这样做:
// 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文件,因为这有可能破坏您自己的变量并用其他数据覆盖它们。