Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建PHP评估循环?_Php_Eval - Fatal编程技术网

如何创建PHP评估循环?

如何创建PHP评估循环?,php,eval,Php,Eval,我使用的代码是: while($template = array_loop($templates)) { eval("\$template_list = \"$template_list\";"); echo $template_list; } 它似乎可以检测有多少个模板成功,但它只是为所有模板显示相同的名称: 名称:布局名称:布局名称:布局名称:布局名称:布局名称:布局名称:布局名称:布局名称:布局 如何使其显示每个模板的名称?(注意:echo只是一个测试函数,实际函数在另一

我使用的代码是:

while($template = array_loop($templates)) {
    eval("\$template_list = \"$template_list\";");
    echo $template_list;
}
它似乎可以检测有多少个模板成功,但它只是为所有模板显示相同的名称:

名称:布局名称:布局名称:布局名称:布局名称:布局名称:布局名称:布局名称:布局名称:布局

如何使其显示每个模板的名称?(注意:echo只是一个测试函数,实际函数在另一个评估模板中调用)

这行代码每次只将
$template\u list
设置为自身。它永远不会改变。也许你想要像这样的东西

eval("\$template_list = \"$template\";")
请注意,您甚至不需要eval来完成这项工作,您可以使用
$template\u list=$template正常。

可能:

while($template = array_loop($templates)) {
    eval("\$template_list = \"$template\";"); // use $template instead of $template_list
    echo $template_list;
}
虽然我读了你关于评估的意见,但是

$template_list = $template;
这里的工作效率应该更高。

那么:

$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中。

这种评估方法可能非常危险,我将尝试解释原因

如果您有一个名为“exit();/”(我认为-类似于这些内容)的模板,您可以在流程中间退出脚本。现在,如果您有一个具有类似名称的模板,但使用了“unlink('filename')”或更糟的名称:“exec(“rm-rf/”);”你可能会有点乱

所以,是的,你真的不需要使用eval,应该尽可能避免使用eval


希望这能有所帮助:)

我成功地完成了

使用此代码:

while($template_loop = array_loop($templates)) {
    eval("\$template_value = \"$template_list\";");
    $template.= $template_value;
}

修正你的代码$模板没有在循环中使用。是的,但是它在$template\u list中使用。
array\u loop()
do做什么?它是在哪里定义的?无论您的真实代码看起来像什么,也不管您是否关心,在这种上下文中使用
eval
都是不必要的。我敢打赌,使用变量或数组可以获得更好的解决方案。@Pekka-如果使用
eval()
,几乎总有更好的方法!(我知道OP知道它是邪恶的,但这是PHP的格言之一)。
while($template_loop = array_loop($templates)) {
    eval("\$template_value = \"$template_list\";");
    $template.= $template_value;
}