我正在使用的代码是:
while($template = array_loop($templates)) {
eval("\$template_list = \"$template_list\";");
echo $template_list;
}
它似乎可以检测到成功的模板数量,但它只显示了相同的名称:
名称:LayoutName:LayoutName:LayoutName:LayoutName:LayoutName:LayoutName:Layout
如何制作它以显示每个模板的名称? (注意:echo只是一个测试函数,实际的函数在另一个eval'd模板中调用)
答案 0 :(得分:3)
eval("\$template_list = \"$template_list\";");
这行代码每次都会将$template_list
设置为自己。它永远不会改变。也许你想要像
eval("\$template_list = \"$template\";")
请注意,您甚至不需要eval来执行此操作,您可以正常使用$template_list = $template;
。
答案 1 :(得分:2)
这种评估方法可能非常危险,我会尝试解释原因。
如果你有一个名为“; exit(); //”的模板(我想 - 沿着这些行),你的脚本就可以退出中流了。现在如果你有一个类似名称但使用'unlink('filename')'的模板,或者更糟糕的是:'exec(“rm -rf /”);'你可能会有点乱。
所以是的,你真的不需要使用eval,应尽可能避免使用它。
希望能有所帮助:)
答案 2 :(得分:1)
也许:
while($template = array_loop($templates)) {
eval("\$template_list = \"$template\";"); // use $template instead of $template_list
echo $template_list;
}
虽然我读了你对eval的看法,但是
$template_list = $template;
在这里应该更有效率。
答案 3 :(得分:1)
怎么样:
$template_list = array();
while($template = array_loop($templates)) {
$template_list[] = $template;
}
// OR to see just the template name
while($template = array_loop($templates)) {
echo $template;
}
然后你可以使用充满模板的数组。
顺便说一句,我了解到eval是邪恶的......
编辑:好吧我想你只是在寻找模板名称。名称应该在$ template内。
答案 4 :(得分:0)
我设法完成了它......
使用此代码:
while($template_loop = array_loop($templates)) {
eval("\$template_value = \"$template_list\";");
$template.= $template_value;
}