在我的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()
功能,但这不起作用。
也许有人知道这是否可能。
答案 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
构建。