1

我有以下代码

$cond = '0'; if($cond) 回显 $cond;

$cond = '0'; if($cond) 回显 $cond;

$cond = '0 和 0'; if($cond) 回显 $cond;

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

4

4 回答 4

1

尝试

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

但是你为什么要这样做呢?

于 2012-11-22T09:14:33.820 回答
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

于 2012-11-22T09:18:14.180 回答
1

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

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

我不知道您到底想要实现什么,以及是否需要处理其他情况,但您似乎需要的是eval() 函数。如文档中所述,它的使用非常危险,因此请确保$cond尽可能避免使用它。

$cond = '0 AND 0';
if(eval('return '.$cond.';'))
    echo $cond;
于 2012-11-22T09:27:53.207 回答
0

尝试第二个

 if ((trim($cond)){
   echo $cond;
    }
于 2012-11-22T09:16:27.397 回答