繁体   English   中英

PHP-如果条件在字符串内

[英]PHP - if condition inside string

一个简单的问题要问,希望不要傻。

$var=0;
$condition="$var!=0";
if($condition) {
    # do something #
}
else {
    # do something else #
}

显然,那里的代码无法按预期工作。 是否有一种从字符串获取if条件的好方法? 还是我必须以某种令人不安的方式解析字符串?

编辑我没有很好地解释自己。 事实是字符串可以包含您可以想象的任何可能的条件:

  • $ var> 0
  • $ var <0
  • $ var == 0
  • 等等

我从xml文件中以字符串形式读取了这种情况,所以我不知道会发现什么。

eval()函数是此处的简便方法。 例如:

if(eval($condition)) {
    # do something #
}
else {
    # do something else #
}

必须强调eval()是邪恶的。 即使您确实知道自己在做什么,使用eval()来使网站变得极度不安全也是非常容易的。 特别是,即使您确定该代码现在是安全的,但在代码的完全不同的部分中添加了一些功能之后,情况可能并非如此。

那就是说eval()有其用途,特别是在诸如迁移脚本之类的快速且肮脏的一次性脚本中。

如果您要编写面向世界的网站,则在使用eval()需要特别注意。 通常,必要的护理要比实施某些non- eval()解决方案更加困难。

只是因为还没有人发布。 问问自己需要进行哪些比较。 如果他们正在执行简单的数学运算,则您可能希望在架构中包含以下内容。

<conditions>
  <notEqual var="var" value="0" />
</conditions>

它允许您有多个条件,应该相对简单地进行解析并转换为php代码。

为什么不做:

$var = 0;
if ($var != 0){
    # do something #
}
else {
    # do something else #
}

编辑:甚至

$var = 0;
$condition = 0
if ($var != $condition){
    # do something #
}
else {
    # do something else #
}
  1. $condition的内容不是$var!=0 ,而是0=0 (由于$不能在双引号内转义( \\$ )。

  2. 您可以使用eval函数执行此操作。

  3. 但是, eval是邪恶的。 问问自己是否真的需要这样做。 如果还有其他方法,请采取。

好,您可以使用邪恶的Eval。 但是,如果您的条件实际上像您建议的那么简单,则可以使用正则表达式测试条件...不需要评估。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM