PHP如果条件在字符串中

时间:2016-09-06 08:15:55

标签: php laravel laravel-5.1

在我的Laravel项目中,我尝试添加if条件,一切正常但是当我尝试将if(true == true)检查为字符串时,它会失败。

这是字符串:true && true && true && true

此外,如果我尝试:true == false && true == false && true == true && true == true

if($this->checkConditions($c_operator, $c_value, $c_value_given)) {
    $status = 'true';
} else {
    $status = 'false';
}

if(empty($run[$run_id]['query'])) {
    $run[$run_id]['query'] = ''.$status.' '.$rule->connection;
} else {
    $run[$run_id]['query'] .= ' '.$status.' '.$rule->connection;
}

最终答复函数

if($r['query']) {
    dump($r['query']);
} else {
    dump('error - '.$r['query']);
}

它将始终转储dump($r['query']);

我也尝试了eval()功能,但这不起作用。

也许有人知道这是否可能。

2 个答案:

答案 0 :(得分:4)

你不能像这样评估字符串。有eval()函数(文档:http://php.net/manual/en/function.eval.php),但我必须强调这通常是一个绝对可怕的想法。

php中的非空字符串计算结果为true。这就是为什么你的代码总是转储字符串,即使它看起来包含布尔逻辑。

编辑:请注意这些文档的评论中引用的引用:

  

如果eval()是答案,你几乎肯定会问   错误的问题。 - Rasmus Lerdorf,PHP的BDFL

答案 1 :(得分:0)

如果你喜欢这样的字符串:

if($string)
{
   //...do something
}
else
{
  //... do other thing
}

如果字符串不为空且不等于"0""null",则它将始终转到true部分if..else构建。