Frage ist gelöstPHP - Variabler Vergleichsoperator
20.01.2012
15:10:51 Uhr392 Aufrufe
1 Antwort
15:10:51 Uhr
1 Antwort
Noch nicht bewertet
Guten Tag,
ich habe ein Problem den richtigen Ansatz zu finden.
ich habe ein Problem den richtigen Ansatz zu finden.
Vorweg, ich habe schon bei Google nach wegen gesucht, unter anderem zur Hilfenahme einer kleinen Klasse, aber irgendwie steh ich auf dem Schlauch.
Ich habe ein Objekt z.B. Kuchen. In diesem Objekt ist eine Liste mit Zutaten Gekapselt. $kuchen->Zutatenlisten.
Ich habe jetzt eine zweite Liste, die von dem Benutzer gefüllt werden kann mit:
Zutat A soll drin sein
UND Zusat B soll drin sein
ODER Zutat C soll nicht drin sein
Konkret
$list[0] = array('operator' => 'AND', 'zutat' = 'Mehl', 'contains' => true;
$list[1] = array('operator' => 'OR', 'zutat' = 'Butter', 'contains' => true;
...
Meine Überlegung ist jetzt: ich würde die Liste nach dem Operator sortieren, sie aufsplitten, alle AND Einträge auf true/false überprüfen und jeden OR eintrag seperat auf true/false überprüfen. und im Anschluss ein gesamt true erzeugen, sobald eins davon true ist?
Oder gibt es da einen viel eleganteren weg? Steh grad ein bisschen auf dem Schlauch
update:
habs mit eval() gelöst
Ich habe ein Objekt z.B. Kuchen. In diesem Objekt ist eine Liste mit Zutaten Gekapselt. $kuchen->Zutatenlisten.
Ich habe jetzt eine zweite Liste, die von dem Benutzer gefüllt werden kann mit:
Zutat A soll drin sein
UND Zusat B soll drin sein
ODER Zutat C soll nicht drin sein
Konkret
$list[0] = array('operator' => 'AND', 'zutat' = 'Mehl', 'contains' => true;
$list[1] = array('operator' => 'OR', 'zutat' = 'Butter', 'contains' => true;
...
Meine Überlegung ist jetzt: ich würde die Liste nach dem Operator sortieren, sie aufsplitten, alle AND Einträge auf true/false überprüfen und jeden OR eintrag seperat auf true/false überprüfen. und im Anschluss ein gesamt true erzeugen, sobald eins davon true ist?
Oder gibt es da einen viel eleganteren weg? Steh grad ein bisschen auf dem Schlauch
update:
habs mit eval() gelöst
dog schreibt am 20.01.2012 um 17:30:01 Uhr
Du kannst nicht einfach zwei verschiedene Operatoren ungeklammert stehen lassen:
Tja, meinst du jetzt
Die Funktion hat mit voller Absicht nur einen Buchstaben Unterschied zum Wort EVIL!
Prinzipiell sollte die Funktion niemals verwendet werden.
Zutat A soll drin sein
UND Zusat B soll drin sein
ODER Zutat C soll nicht drin sein
UND Zusat B soll drin sein
ODER Zutat C soll nicht drin sein
Tja, meinst du jetzt
(A & B) | C
oder dochA & ( B | C )
?habs mit eval() gelöst
Die Funktion hat mit voller Absicht nur einen Buchstaben Unterschied zum Wort EVIL!
Prinzipiell sollte die Funktion niemals verwendet werden.








