我有以下代码
$cond = '0'; if($cond) 回显 $cond;
$cond = '0'; if($cond) 回显 $cond;
$cond = '0 和 0'; if($cond) 回显 $cond;
第一个只做预期的事情,其余的不做。这些如何执行相同的行为,特别是我如何评估第三种情况下的条件。
我有以下代码
$cond = '0'; if($cond) 回显 $cond;
$cond = '0'; if($cond) 回显 $cond;
$cond = '0 和 0'; if($cond) 回显 $cond;
第一个只做预期的事情,其余的不做。这些如何执行相同的行为,特别是我如何评估第三种情况下的条件。
尝试
if (intval($cond)) echo $cond;
但是你为什么要这样做呢?
只需使用 strpos 在 $cond 中搜索 0
$cond = '0 AND 0';
$search = '0';
if (strpos($cond, $search) !== false) echo $cond;
首先,我将解释发生了什么。在每种情况下,您都在测试一个字符串,而不是一个布尔表达式。非空字符串的计算结果始终为,true
除非它可以转换为另一种类型。
'0'
将被转换为整数0
等false
'0 '
将保留为字符串,因为空间明确表示它是一个字符串,所以是true
'0 AND 0'
显然是一个字符串,true
也是我不知道您到底想要实现什么,以及是否需要处理其他情况,但您似乎需要的是eval() 函数。如文档中所述,它的使用非常危险,因此请确保$cond
尽可能避免使用它。
$cond = '0 AND 0';
if(eval('return '.$cond.';'))
echo $cond;
尝试第二个
if ((trim($cond)){
echo $cond;
}