2

我的条件是由代码生成为一个字符串,如下所示:

$mycondition = "(strpos(strtolower($foo1), strtolower($bar)) !== false) AND (strpos(strtolower($foo1),  strtolower($bar2)) !== false) // AND ((strpos(strtolower($foo2),  strtolower($bar1)) !== false)) AND..."; ad infinitum

我的 if 语句应该是这样的:

if ($mycondition) then...

我可以像这样使用 eval() 来做到这一点:

if (eval("return $mycondition;")) then...

但我知道 eval() 不是推荐的做法。在搜索论坛时,我看到许多反对使用 eval() 的声音,但实际上并没有很多替代方案。

有什么选择?如何将生成的字符串放入 if 条件中?

4

1 回答 1

1

一种解决方法是,在您生成条件的地方,只有您可以进行比较并在最后生成一个布尔值,稍后您可以在代码中使用它。

于 2013-10-06T07:09:34.080 回答