Mailinglisten-Archive |
Hi Reiner, > Ich vermisse übrigens in PHP eine Funktion, die prüft, ob ein Wert in > einem Array vorhanden ist (oder habe ich die übersehen?). Also etwa: > if ($a in $b) {...}. Tatsächlich, sowas scheint´s nicht zu geben (jedenfalls habe ich auch nichts dergleichen entdecken können). Man könnte sich natürlich eine Funktion schreiben, die einfach alle Elemente in einem Array durchgeht, und "true" zurückliefert, wenn das gesuchte dabei war. Das ist aber sicher nicht sehr schnell und irgendwie auch "unelegant"... Folgender "Trick" fällt mir gerade ein, mit dem man es auch anders schaffen könnte ("completely untested" allerdings): Voraussetzung ist, daß einem die Reihenfolge der Elemente im Array egal ist. Dann könnte man das Array auch zu einem assoziativen Array machen (in PHP ist ja eigentlich sowieso jedes eins) und die eigentlichen Werte als Key und einen "dummy"-Wert als value abspeichern. In etwa so: // aus diesem Feld // $a[1] = "bli"; $a[2] = "bla"; $a[2] = "blu"; // macht man $a["bli"] = "yes"; $a["bla"] = "yes"; $a["blu"] = "yes"; // (anstatt "yes" kann man natürlich auch was völlig anderes nehmen) // // an der Stelle, wo die Abfrage "$b enhalten in $a ?" stattfindet // kann man dann folgendes machen if (isset($a[$b]) { echo "Jawollja!"; } Das ist vermutlich wesentlich schneller als alle Array-Elemente durchzugehen. > Es gibt noch eine vierte Möglichkeit: Man speichert mehrere durch > Kommata getrennte Werte in einem Feld wie "123,234,345,456". In der > SQL-Abfrage geht dann z.B.: "select * from tabelle1, tabelle2 where > feld.tabelle1 in (liste.tabelle2)", wobei "liste" das feld mit obiger > Liste in tabelle2 ist und "feld" ein Feld in tabelle1 mit einem Wert > der möglicherweise in dieser Liste vorkommt. Mmhh, ich habe jetzt ehrlich gesagt dieses "...in..."-Konstrukt in SQL noch nie verwendet. Aber sollte das nicht "select * from tabelle1, tabelle2 where tabelle1.feld in (tabelle2.liste)" heissen? CU, Manuel -- Quote of the month: "The parade that´s electrical, it serves no real purpose Takes up a lot of juice, just to impress us." (No Doubt, "Tragic Kingdom")
php::bar PHP Wiki - Listenarchive