2012-11-22 340 views
1

我具有以下的代码如果条件为PHP评估

$ COND = '0' 位;如果($ cond)echo $ cond;

$ cond ='0';如果($ cond)echo $ cond;

$ cond ='0 AND 0';如果($ cond)echo $ cond;

第一个只做预期其余的没有。这些如何执行相同的行为,特别是如何评估第三种情况下的状况。

+0

你可以使用修剪第二个代码 –

+0

你期待什么发生?我希望他们都回声$ cond –

+0

我期待没有什么应该打印所有这些条件 – HardCode

回答

1

尝试

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

但是,你为什么要这么做?

0

拉升第二个

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

在$ COND只要搜索0附有strpos

$cond = '0 AND 0'; 
$search = '0'; 

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

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

+0

这适用于所有情况,并且是合法的。 –

1

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

  • '0'将被转换为整数0等以false
  • '0 '就会留在这里,因为这明确地说,这是一个字符串的空间的字符串,因此是true
  • '0 AND 0'显然是一个字符串,是true

我不知道你到底想要达到什么目的,如果你需要处理其他情况,但你是什么似乎需要的是eval() function。正如文件中所说,它的使用是非常危险所以可以肯定的是$cond可以避免它,如果可能的话。

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