Mailinglisten-Archive |
Hallihallohallöle, ich brauche eine Funktion, die mir die Werte aus einem Array liefert, die auch in einem zweiten Array enthalten sind. Grund: Ich habe ein Web-Formular, in dem die User aus einer Checkbox-Liste ein paar Optionen (=IDs) wählen. Je nachdem, welcher User die Liste bearbeitet, wird nur ein Teil der Kategorien angezeigt. Nun könnte man ja aber auch ein gefälschtes Formular zurücksenden, ich muß also die Daten, die zurückkommen, nochmal gegen die "erlaubt"-Liste vergleichen. Ich dachte mir, daß sowas häufiger vorkommt, und wollte Euch mal das Snippet schicken: -8<- function restrict($x, $l) { /* returnt ein Array mit den gemeinsamen Werten von $x und $l */ $r = array(); /* leere Arrays abfangen, da sie sich bei reset() nicht von Nullwerten unterscheiden lassen. */ if (!(sizeof($x) && sizeof($l))) return $r; /* Wie performant ist sort()? */ sort($x); sort($l); $a = reset($x); $b = reset($l); $continue = 1; while ($continue) { if ($a == $b) { $r[sizeof($r)]=$a; /* Element anhängen - geht das einfacher? */ $continue &= (list($foo, $a) = each($x)); $continue &= (list($foo, $b) = each($l)); } else if ($a < $b) $continue &= (list($foo, $a) = each($x)); else $continue &= (list($foo, $b) = each($l)); } return $r; } -8<- 1) Gibt es eigentlich sowas wie snippets.org für PHP? Vielleicht bei phpwizard? 2) Hat einer noch Vorschläge zur Verbesserung der Performance für die obenstehende Funktion? Matthias -- w e b f a c t o r y | matthias pigulla am wichelshof 10 fon 0228-9636949 53111 bonn fax 0228- 655656 www.webfactory.de mp_(at)_webfactory.de
php::bar PHP Wiki - Listenarchive