2016-04-21 2 views
2

Hallo ich eine String-Variable haben (was ich von einer anderen Quelle erhalten) als "$abc=='xyz' AND $yza == 'lmn'" .. und so weiter. Gibt es eine Möglichkeit, diese ganze Zeichenfolge in IF-Anweisung zu setzen, um die Bedingung zu testen. wieWie können wir einen String Bedingung zu verwenden, in parsen if-Anweisung

$condition = "$abc=='xyz' AND $yza == 'lmn'"; 
    if($condition) 
    //do something.. 
    else 
    //do something... 

Danke.

+1

welche Art von Input und aus Sie setzen wollen? Hast du etwas versucht? kannst du bitte deinen Code zeigen? –

+0

Ich bin eine Eingabe von Excel-Datei, aus Excel Zustand nehmen wurde als Zelle A = abc definiert, ConditionCell = AND, Cell B = xyz so weiter .. All diese Bedingung ich in die PHP als assoziatives Array nehme (für jetzt) ​​aber Liste wird zu lang sein und statische Lösung wird nicht funktionieren, da ich nicht weiß, wie viele UND, ODER kann dort in der Bedingung sein. Was ich versuche zu erreichen, ist, diese ganze Zeile als eine Zeichenkette beim Lesen zu konvertieren und sie so zu setzen, wie es ist, wenn es um PHP geht. Ich hoffe, dass es Ihnen hilft, das Problem zu verstehen –

+0

@GovindMantri Das Problem besteht darin, dass Sie eine Zeichenfolge in die If-Bedingung übergeben und damit die Zeichenfolge als truthy Wert unabhängig davon erkennt, ob eine Bedingung in der Zeichenfolge vorhanden ist oder nicht – WebInsight

Antwort

1

eval() tun, was Sie wollen, aber es ist nicht eine sehr gute Idee.

$condition = "$abc=='xyz' AND $yza == 'lmn'"; 
if(eval($condition)) 
//do something.. 
else 
//do something... 
+0

Dank ... könnte u bitte erklären, warum nicht mit eval zu gehen() ?? –

+0

Es ist eine gute Idee, wirklich eval-Funktion ist die einzige Art und Weise führen, dass Sie PHP-Anweisungen auch durch die Sie die Bedingungen in der, wenn die Bedingung ein, wenn die Aussagen erscheinen als Zeichenfolgen in der ersten place.Either diese Funktion nutzen analysieren kann oder das Format ändern in der erste Platz – WebInsight

+0

@Debojyoti Das ist nicht korrekt. Eval ist böse und so ziemlich nie eine gute Idee! Es kann ziemlich kompliziert sein, sicherzustellen, dass kein schädlicher Code eindringen kann. Und natürlich könnte man einen PHP-Ausdruck erstellen (Baum) Parser/Compiler/Evaluator, Eval ist definitiv nicht der einzige Weg. – ndm

0

Mehr richtige Syntax mit eval() soll (vielleicht jemand anderes wird es brauchen):

$condition = "return $abc=='xyz' AND $yza == 'lmn';"; 
if (eval($condition)) 
    //do something.. 
else 
    //do something... 

Da innerhalb von eval(), Zustand mit ; enden soll. Und normalerweise beginnt es mit einem return.

Verwandte Themen