phpbar.de logo

Mailinglisten-Archive

[php] 2dimensionales Array auf "unique values" checken

[php] 2dimensionales Array auf "unique values" checken

THE GENERATOR the_generator_(at)_gmx.net
Mon, 13 Nov 2000 10:06:25 +0100


Hallo Liste,

ich habe mal wieder ein kleines Problemchen ;)

ich habe ein 2dimensionales Array $defined_arrays.
In diesem Array stehen widerum eine unbekannte Anzahl von Einzel-Arrays
(maximal 4!).
Nun möchte ich möglichst schnell und leistungsstark die Werte von
$defined_arrays rausfinden, welche in jedem Einzel-Array vorhanden sind. Pro
Array kommt ein Wert auch definitiv nur einmal vor.
Der von mir verwendete Code funktioniert, aber bei großen Einzel-Arrays
(>1000 Werte) bekomme ich einen Timeout :((((
Hier der Code :

-- schnipp ---
   function cmp ($a, $b)

       if ($a == $b) return 0;
       return ($a < $b) ? -1 : 1;
   }
   $smallest_array = $defined_arrays[$smallest_index];
   usort ($smallest_array, "cmp");
   reset ($smallest_array);
   $anz_defined_arrays = count($defined_arrays);

   $x=0;
   echo count($smallest_array), "<BR><BR>";
   while ($x<300) {
    $match_or_not = $smallest_array[$x];
        $count = 0;
        for ($y=0;$y<$anz_defined_arrays;$y++) {
             $anz_max_durchlaeufe = count($defined_arrays[$y]);
             if ($anz_max_durchlaeufe > 300) { $anz_max_durchlaeufe=300; }
                 for ($z=0;$z<$anz_max_durchlaeufe;$z++) {
                      if ($defined_arrays[$y][$z] == $match_or_not) {
                           $count++;
                           break;
                      }
                 }
            }
            if ($count == $anz_defined_arrays) { $matches[] =
$match_or_not; }
            if ($smallest_size == $x) { break; }
            $x++;
   }

--- schnapp ---

in dem eindimensionalen Array $matches stehen die "unique values", also die
Werte, die in ALLEN Einzelarrays vorkommen.

Um dem Timeout zuvorzukommen habe ich an bestimmten Stellen die
Schleifendurchläufe auf 300 begrenzt, aber diese Lösung ist meines Erachtens
nicht befriedigend.

Meine Frage:
Hat einer sowetwas schon gemacht, oder kann mir jemand bei der Optimierung
helfen????
Das dumme an der Sache ist, dass mein Provider sich momentan nicht dazu
überreden lässt auf PHP4 upzugraden, was die Sache zu einem verzwickten
Unterfangen macht.

Bin für jede Hilfe dankbar.

Greetingz,

Christoph



php::bar PHP Wiki   -   Listenarchive