PHP - Variabler Vergleichsoperator
Guten Tag,
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 = 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 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 = 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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179267
Url: https://administrator.de/contentid/179267
Ausgedruckt am: 23.11.2024 um 00:11 Uhr
1 Kommentar
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.