Bewerten von MongoDB-ähnlichen JSON-Abfragen in PHP

9

Betrachten Sie die folgende (ziemlich komplizierte) Abfrage, die in diesem JSON-Objekt ausgedrückt wird:

%Vor%

Ziel

Ich möchte diesen JSON analysieren, so dass er das PHP-Äquivalent von (wo $a meine Zieldaten ist) auswertet:

%Vor%

Ich habe wenig Erfahrung beim Erstellen von Ausdrucksauswertern. Meine Idee ist es, die Abfrage von der innersten Ebene bis zur äußersten Ebene zu durchlaufen und die entsprechenden MongoDB-Operator -Methoden aufzurufen benötigt.

Wenn $a mit der Abfrage übereinstimmt, wäre dies der Evaluierungsplan:

%Vor%

Der zweite Schritt:

%Vor%

Der dritte Schritt:

%Vor%

Der vierte Schritt:

%Vor%

Da alle Werte boolesch sind, endet die Auswertung mit !in_array(false, $query, true) .

Wenn es einen besseren Ansatz gibt, lassen Sie es mich wissen.

Problem: Zugriff auf Eltern-Array-Schlüssel

Ich bleibe stecken, indem ich versuche, das Innerste der Elemente und die relevanten (ignorierenden Operatoren) Array-Index Pfad zu bekommen, wenn ich zum Beispiel einen RecursiveIteratorIterator verwende, bekomme ich die korrekten Werte für den ersten Iteration:

%Vor%

Es ist jedoch wenig nützlich, da ich nicht sicher sein kann, auf welchen $a index die Schlüssel verweisen, ganz zu schweigen davon, dass die Schlüsselwerte durch letztere Einträge überschrieben werden und die Tatsache, dass ich ihre Werte nicht ändern kann.

Ich habe auch versucht mit RecursiveArrayIterator zu spielen, aber ohne hasParent() / getParent() Methoden es scheint mir nicht viel Vorteil gegenüber einfach Foreaching das Array.

Irgendwelche Vorschläge?

    
Alix Axel 28.12.2012, 13:44
quelle

1 Antwort

3

Ich lese schnell Ihre Frage, es klingt wie Sie Blätter besuchen und den Schlüsselpfad zu ihnen wissen möchten.

also hier:

%Vor%     
goat 28.12.2012, 17:45
quelle