2016-09-06 3 views
-2

In meinem Laravel-Projekt versuche ich hinzufügen, wenn Bedingungen, alles funktioniert, aber wenn ich versuche, if(true == true) als eine Zeichenfolge zu überprüfen, schlägt es fehl.PHP wenn Bedingung in String

Dies ist die Zeichenfolge: true && true && true && true

Auch wenn ich versucht: 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; 
} 

Die letzte Antwortfunktion

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

Es wird Dump immer dump($r['query']);

ich auch versucht, die eval() Funktion, aber das hat nicht funktioniert.

Vielleicht weiß jemand, ob das möglich ist.

+0

... was? Könnten Sie uns bitte den tatsächlichen Code anstelle Ihres Pseudocodes zeigen? – Epodax

+0

Bitte geben Sie spezifischere Informationen zu diesem Problem an. – aslawin

+0

Was möchten Sie tun? Sie überprüfen, ob das 'bool true'' bool false' ist, 2 mal. Das Gleiche gilt für 'bool true' ist' bool true' –

Antwort

4

Sie können eine Zeichenfolge nicht als PHP so bewerten. Es gibt die eval() Funktion (Dok: http://php.net/manual/en/function.eval.php), aber ich muss betonen, dass dies normalerweise eine absolut schreckliche Idee ist.

Eine nicht leere Zeichenfolge in PHP wird als wahr ausgewertet. Aus diesem Grund gibt der Code die Zeichenfolge immer ab, auch wenn sie scheinbar boolesche Logik enthält.

Edit: Achten dieses zitierte Zitat aus den Kommentaren dieser Dokumente:

Wenn eval() die Antwort ist, sind Sie mit ziemlicher Sicherheit die falsche Frage. - Rasmus Lerdorf, BDFL von PHP

+0

Ist es möglich, dies zu tun: 'if ($ array ['wert1'] && $ array ['wert2'] || $ array ['wert3'])' wenn sich die Daten in einem Array befinden? Und ist es möglich, '&&' und '||' in einer Variablen hinzuzufügen, damit die if-Bedingung variabel ist? –

+0

Sollte sein, ja. Ich habe es nicht ausprobiert, da ich denke, dass es eine wirklich schlechte Übung ist. –

0

Wenn tun Sie, wenn mit Zeichenfolge wie folgt:

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

und wenn Zeichenfolge nicht leer ist und nicht gleich "0" oder "null" es immer true Teil gehen von if..else Konstruktion.