一个容易提出的问题,希望不要愚蠢。
$var=0;
$condition="$var!=0";
if($condition) {
# do something #
}
else {
# do something else #
}
显然,那里的代码不能按预期工作。有没有一种很好的方法从字符串中获取if条件?或者我是否必须以令人不安的方式解析字符串?
EDIT 我没有很好地解释自己。 事实是,字符串可能包含任何可以想象的条件:
我从一个xml文件中读取这个条件作为字符串,所以我不知道我会找到什么。
答案 0 :(得分:4)
eval()
功能是这里的简单方法。 E.g:
if(eval($condition)) {
# do something #
}
else {
# do something else #
}
必须强调eval()
是邪恶的。使用eval()
很容易使网站变得非常不安全,即使你真的知道自己在做什么。特别是,即使您确定代码是安全的现在,在代码的完全不同部分添加一些功能后也可能不是这样。
据说eval()
有其用途,特别是在快速而肮脏的单一用途脚本(如迁移脚本)中。
如果您正在撰写面向世界的网站,则在使用eval()
时需要小心 * extreme * 。通常,必要的护理量比实施一些非eval()
解决方案更困难。
答案 1 :(得分:4)
因为还没有人发布它。问问自己需要进行哪些比较。如果他们正在进行简单的数学运算,您可能希望在架构中有这样的东西。
<conditions>
<notEqual var="var" value="0" />
</conditions>
它允许你有多个条件,应该相对简单地解析并转换为php代码。
答案 2 :(得分:1)
为什么不这样做:
$var = 0;
if ($var != 0){
# do something #
}
else {
# do something else #
}
编辑:甚至
$var = 0;
$condition = 0
if ($var != $condition){
# do something #
}
else {
# do something else #
}
答案 3 :(得分:0)
$condition
的内容不是$var!=0
,而是0=0
(由于$
未被双引号转义(\$
)
您可以使用eval
功能执行此操作。
然而,eval
是邪恶的。问问自己是否真的需要这样做。如果有任何其他方式,请采取它。
答案 4 :(得分:-1)
好的,你可以使用邪恶的Eval。但是如果您的情况实际上和您提议的一样简单,您可以使用正则表达式来测试条件......不需要评估。