2016-09-06 7 views
-2

私のLaravelプロジェクトでは、すべての条件が満たされれば追加しようとしますが、if(true == true)を文字列としてチェックしようとすると失敗します。PHPの条件が文字列の場合

これは文字列です: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']);

をダンプします:私がしようとした場合もtrue && true && true && true

eval()機能が動作しませんでした。

誰かがこれが可能かどうかを知っているかもしれません。

+0

...何ですか?擬似コードの代わりに実際のコードを表示してください。 – Epodax

+0

この問題に関するより具体的な情報を入力してください。 – aslawin

+0

あなたは何をしようとしていますか? 'bool true'が' bool false'であるかどうかを2回チェックします。 'bool true'と同じ' bool true' –

答えて

4

文字列をPHPのように評価することはできません。 eval()関数(docs:http://php.net/manual/en/function.eval.php)がありますが、これは通常、大変恐ろしい考えです。

phpの空でない文字列がtrueに評価されます。そのため、ブール論理を含むように見えても、コードは常にその文字列をダンプします。 evalは()の答えであれば、

あなたはほぼ確実に 間違った質問をしている:

編集:これらのドキュメントのコメントから、この引用された引用に従ってください。 - ラスマス・ラードフ、PHP

+0

これは可能ですか?データが配列内にある場合、 'if($ array ['value1'] && $ array ['value2'] || $ array ['value3'])'? 変数に '&&'と '||'を追加して、if条件が可変であるようにすることはできますか? –

+0

する必要があります。私はそれが本当に悪い習慣だと思って以来、私はそれを試していない。 –

0

のBDFLあなたはこのような文字列であればやっている場合:

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

と文字列が空と"0"または"null"と等しくないではない場合、それは常にtrue部分に移動しますif..elseの構成です。

関連する問題