phpbar.de logo

Mailinglisten-Archive

[php] gemeinsame Werte aus zwei Listen holen

[php] gemeinsame Werte aus zwei Listen holen

Matthias Pigulla mp_(at)_webfactory.de
Sun, 18 Apr 1999 17:26:02 +0200


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