如果要评估PHP的条件

时间:2012-11-22 09:13:02

标签: php operators boolean-logic

我有以下代码

  

$ cond =' 0&#39 ;; if($ cond)echo $ cond;

     

$ cond =' 0&#39 ;; if($ cond)echo $ cond;

     

$ cond =' 0和0&#39 ;; if($ cond)echo $ cond;

第一个只做预期其余的事情。如何执行相同的行为,特别是如何在第三种情况下评估条件。

4 个答案:

答案 0 :(得分:1)

尝试

if (intval($cond)) echo $cond;

但你为什么要这样做?

答案 1 :(得分:1)

只需使用strpos

在$ cond中搜索0
$cond = '0 AND 0';
$search = '0';

if (strpos($cond, $search) !== false) echo $cond; 

http://php.net/manual/en/function.strpos.php

答案 2 :(得分:1)

首先,我将解释发生了什么。在每种情况下,您都在测试字符串,而不是布尔表达式。非空字符串始终计算为true,除非它可以转换为其他类型。

  • '0'将转换为整数0,因此转换为false
  • '0 '将保留为字符串,因为明确表示它是字符串的空格,true
  • '0 AND 0'显然是一个字符串,也是true

我不知道你究竟想要实现什么,如果你需要处理其他案件,但你似乎需要的是eval() function。如文档中所述,它的使用非常危险所以请确保$cond可以避免它,如果可能的话。

$cond = '0 AND 0';
if(eval('return '.$cond.';'))
    echo $cond;

答案 3 :(得分:0)

尝试第二个

 if ((trim($cond)){
   echo $cond;
    }