Mailinglisten-Archive |
Hallo Leute, > $prd['a'][punkte] = 30; > $prd['a'][ko] = 1; > $prd['a'][eli] = 1; > $prd['b'][punkte] = 15; > $prd['b'][ko] = 2; > $prd['b'][eli] = 0; > $prd['c'][punkte] = 20; > $prd['c'][ko] = 2; > $prd['c'][eli] = 1; das ist einfach nur ungeschickt hingeschrieben, mehr nicht: $prd['a'] = array("punkte"=>30, "ko"=>1, "eli"=>1); $prd['b'] = array("punkte"=>15, "ko"=>2, "eli"=>0); $prd['c'] = array("punkte"=>20, "ko"=>2, "eli"=>1); Das ist also eine simple dreispaltige Tabelle! Diese kann man mit 'usort();' nach 'einem' Wert sortieren, entweder 'punkte' oder 'ko' oder 'eli', mehr ist erstmal nicht. In einem zweiten Durchlauf, koennte man das Array in Subarrays zerlegen, fuer jeweils gleiche Werte von 'punkte', und diese Subarrays dann z.B. nach 'ko' sortieren. Last not least laessen sich im dritten Lauf Subarrays fuer gleiche Werte von 'ko' innerhalb der identischen Werte von 'punkte' dann nach 'eli' sortieren - ohh Mann - OO is geil! Aber den Stress wuerde ich mir nicht antun wollen, ehrlich! Das geht auch wesentlich trivialer, so man sich Spaltennamen merken kann, sonst natuerlich nicht... ;-) $neu = array(); echo "<pre>vorher:\n"; reset($prd); while(list($kaa,$vaa)=_(at)_each($prd)) {$key = ""; /* Sortierreihenfolge nach Bedarf aendern */ $key .= sprintf("%05s", $vaa['punkte']); $key .= sprintf("%05s", $vaa['ko']); $key .= sprintf("%05s", $vaa['eli']); $key .= $kaa; $val = implode($vaa, "¯"); $neu[$key] = $val; echo " key: ".$key." - val: ".$val."\n"; } ksort($neu); echo "nachher:\n"; reset($neu); while(list($kaa,$vaa)=_(at)_each($neu)) {echo " key: ".$kaa." - val: ".$vaa."\n"; } echo "das wars schon... ;-)</pre>\n"; Hinweis, sollten die Puenktjes mehr als 5 Stellen haben, oder mal noch Strings drin sein, ist wurscht, einfach den Key laenger machen... ;-) m. b. G. Norbert (der Repetitor) ________________________________ normal: 02292-681769 Notruf: 0177-2373368 -------------------------------- e.o.m.
php::bar PHP Wiki - Listenarchive