Mailinglisten-Archive |
Hi Lutz, array_multisort() sortiert hier nix! Weder in der Weise, wie ich es mir dachte und auch nicht mit Deinem Code aus der vorhergehenden Mail. Ausserdem benoetigst man offensichtlich wesentlich mehr als eine Zeile, damit es ueberhaupt laeuft. uasort() braucht das alles nicht, nur eine immer wieder gleich aufgebaute Komparisationsfunktion. <PRE><?php function getmicrotime() { list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } function comp($A, $B) { $a = $A['hits']; $b = $B['hits']; if ($a == $b) return 0; return ($a > $b) ? -1 : 1; } $ARR = array( 'foo' => array('hits'=>1, 'html'=>'asdf.html'), 'bar' => array('hits'=>1, 'html'=>'qwer.html'), 'yxc' => array('hits'=>2, 'html'=>'yxcv.html'), 'qwe' => array('hits'=>1, 'html'=>'ghjk.html'), 'lkj' => array('hits'=>1, 'html'=>'tzui.html')); print_r($ARR); $t_ON = getmicrotime(); for($i=0; $i<1000; $i++) { $AA = $ARR; uasort($AA, 'comp'); } echo '<B>'.number_format((getmicrotime() - $t_ON),3,',','.').' ms</B> - '; print_r($AA); $t_ON = getmicrotime(); for($i=0; $i<1000; $i++) { $AA = $ARR; $keys = array_keys($AA); $hits = array(); foreach ($keys as $key) { array_push ($hits, $AA[$key]['hits']); } array_multisort($hits, SORT_NUMERIC, SORT_DESC, $keys, SORT_STRING, SORT_ASC); } echo '<B>'.number_format((getmicrotime() - $t_ON),3,',','.').' ms</B> - '; print_r($AA); print_r($keys); print_r($hits); ?></PRE> m. b. G. Norbert _____________________ normal: 02686-987103 Notruf: 0177-2363368 --------------------- e.o.m.
php::bar PHP Wiki - Listenarchive