foreach fuer mehrere Dimensionen
Eine Menge unstrukturierter Daten ist zu sortieren und zu
verarbeiten. Jeder Datensatz besteht aus einer Reihe von Merkmalen.
Alle Saetze, bei denen bestimmte Merkmale ident sind, sollen dabei
gemeinsam verarbeitet werden.
Erster Schritt: befuellen eines n-dimensionalen Hashes der Form
| $hash[$item.m1][$item.m2][$item.m3][...][$item.m7][$item.m8] [] = $item
Zweiter Schritt: verarbeiten aller Felder, bei denen ein oder
mehrere Eintraege vorhanden sind in einer Funktion der Art
| process($m1, $m2, $m3, $m4, $m5, $m6, $m7, $m8, $items)
(Im Prinzip kann man $m1 bis $m8 auch weglassen, da die Werte
ohnehin auch in allen $items enthalten sind, aber das ist fuer die
Ueberlegungen hier egal)
Dumm ist nur, dass der weit aufgespannte Merkmalsraum sehr spaerlich
besetzt ist. Meist sind nur einige wenige Felder ueberhaupt
befuellt, weswegen mir ein 8-fach verschachteltes foreach nicht so
richtig passend erscheint. Was bietet sich hier besser an?
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
2007 Jahre Langeweile: Wie konnte man das ohne Stefan wohl aushalten.
(Sloganizer)
Re: foreach fuer mehrere Dimensionen
Stefan Froehlich schrieb:
> Eine Menge unstrukturierter Daten ist zu sortieren und zu
> verarbeiten. Jeder Datensatz besteht aus einer Reihe von Merkmalen.
> Alle Saetze, bei denen bestimmte Merkmale ident sind, sollen dabei
> gemeinsam verarbeitet werden.
>
> Erster Schritt: befuellen eines n-dimensionalen Hashes der Form
>
> | $hash[$item.m1][$item.m2][$item.m3][...][$item.m7][$item.m8] [] =3D $i=
tem
Sieht sehr unpraktisch aus. Folgende Struktur gruppiert sinnvoller:
foreach ( $items as $item ) {
$hash['m1'][$item->m1][] =3D $item;
$hash['m2'][$item->m2][] =3D $item;
...
$hash['m8'][$item->m8][] =3D $item;
}
MfG
Niels
--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: foreach fuer mehrere Dimensionen
On Thu, 27 Sep 2007 21:30:20 +0200 Niels Braczek wrote:
> > Alle Saetze, bei denen bestimmte Merkmale ident sind, sollen dabei
> > gemeinsam verarbeitet werden.
> > | $hash[$item.m1][$item.m2][$item.m3][...][$item.m7][$item.m8] [] = $item
> Sieht sehr unpraktisch aus. Folgende Struktur gruppiert sinnvoller:
> foreach ( $items as $item ) {
> $hash['m1'][$item->m1][] = $item;
> $hash['m2'][$item->m2][] = $item;
> ...
> $hash['m8'][$item->m8][] = $item;
> }
Naja, sinnvoll - sinnvoll wofuer? Da habe ich hinterher in einer
Dimension alle Saetze mit gleichem m1, in der naechsten alle mit
gleichem m2, usw. Aber was mache ich dann damit?
Fuer meine Anwendung (abarbeiten aller Gruppen, fuer die jeweils
m1-m8 ident sind) erscheint mir das nicht unbedingt zielfuehrend.
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Stefan. Hässlich und dezent!
(Sloganizer)
Re: foreach fuer mehrere Dimensionen
Stefan Froehlich schrieb:
> Naja, sinnvoll - sinnvoll wofuer? Da habe ich hinterher in einer
> Dimension alle Saetze mit gleichem m1, in der naechsten alle mit
> gleichem m2, usw. Aber was mache ich dann damit?
So hatte ich deine Aufgabenstellung verstanden.
> Fuer meine Anwendung (abarbeiten aller Gruppen, fuer die jeweils
> m1-m8 ident sind) erscheint mir das nicht unbedingt zielfuehrend.
Dann muss einfach nur *ein* Index aus den Eigenschaften m1 bis m8
erzeugt werden.
foreach ( $items as $item ) {
$index =3D $item->m1.'|'.$item->m2. ... .'|'.$item->m8;
$hash[$index][] =3D $item;
}
Damit hast du alle Sätze, die in allen Eigenschaften m1 bis m8
übereinstimmen, zu jeweils einer Gruppe zusammengefasst.
MfG
Niels
--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: foreach fuer mehrere Dimensionen
On Thu, 27 Sep 2007 23:39:43 +0200 Niels Braczek wrote:
> > Fuer meine Anwendung (abarbeiten aller Gruppen, fuer die jeweils
> > m1-m8 ident sind) erscheint mir das nicht unbedingt zielfuehrend.
> Dann muss einfach nur *ein* Index aus den Eigenschaften m1 bis m8
> erzeugt werden.
Gna. Der Mann hat natuerlich recht, das Problem ist ja in
Wahrheit sowas von eindimensional. Merci.
Servus,
Stefan (mit Balken im Auge)
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Stefan - Entspannung in Ewigkeit!
(Sloganizer)