2016-09-06 54 views
-2

在我的Laravel项目中,我尝试添加如果条件,一切正常,但当我试图检查if(true == true)作为一个字符串失败。PHP如果条件字符串

这是字符串: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

...什么?你能告诉我们实际的代码而不是你的伪代码吗? – Epodax

+0

请提供有关此问题的更多具体信息。 – aslawin

+0

你想要做什么?你检查'bool true'是否是'bool false',2次。 'bool true'与'bool true'一样''bool true' –

回答

4

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

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

编辑:留意那些文档的评论此引用报价:

如果的eval()答案是,你几乎可以肯定问 错误的问题。 - 拉斯姆斯·勒多夫,PHP的BDFL

+0

是否有可能这样做:'如果数据在数组中,如果($ array ['value1'] && $ array ['value2'] || $ array ['value3'])'' 是否可以在变量中添加'&&'和'||'以便if条件可变? –

+0

应该,是的。我还没有尝试过,因为我认为这是一个非常糟糕的做法。 –

0

如果你做的,如果有这样的字符串:

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

,如果字符串不是空的,不等于"0""null"它会永远去true部分if..else建设。