Betrachten Sie die folgende (ziemlich komplizierte) Abfrage, die in diesem JSON-Objekt ausgedrückt wird:
%Vor% Ich möchte diesen JSON analysieren, so dass er das PHP-Äquivalent von (wo $a
meine Zieldaten ist) auswertet:
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:
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.
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:
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?
Tags und Links arrays php iterator multidimensional-array evaluation