2016-09-06 91 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建設。