2010-01-30 21 views
-2

我正在使用的代码是:你如何创建一个PHP eval循环?

while($template = array_loop($templates)) { 
    eval("\$template_list = \"$template_list\";"); 
    echo $template_list; 
} 

这似乎发现多少模板也有成功的,但它只是显示了同样的名字为他们所有:

名称:LayoutName:LayoutName:LayoutName :LayoutName:LayoutName:LayoutName:Layout

如何使它显示每个模板的名称? (注:回声仅仅是一个测试功能,实际的一个被另一个eval'd模板内的称呼)

+0

解决您的代码。 $ template不在循环中使用。 – erenon 2010-01-30 20:55:12

+0

是的,但它用在$ template_list – Ryan 2010-01-30 20:55:48

+0

这段代码试图做什么? – 2010-01-30 20:55:58

回答

0

我设法把它做...

有了这个代码:

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

这行代码每次只设置$template_list本身。它永远不会改变。也许你想要的东西像

eval("\$template_list = \"$template\";") 

注意,你甚至不需要EVAL要做到这一点,你可以只使用$template_list = $template;正常。

1

可能:

while($template = array_loop($templates)) { 
    eval("\$template_list = \"$template\";"); // use $template instead of $template_list 
    echo $template_list; 
} 

虽然我读了你的eval方面的意见,但

$template_list = $template; 

应该工作更高效这里。

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内。

2

这种评估方法可能相当危险,我会试着解释为什么。

如果你有一个名为“; exit(); //”(我认为 - 沿着这些行的东西)的模板,你的脚本可以退出中流。现在如果你有一个类似名字的模板,但是使用'unlink('filename')'或者更糟:'exec(“rm -rf /”);'你可能会陷入一团糟。

所以是的,你真的不应该需要使用评估,并应尽可能避免它。

,希望能有所帮助:)