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