Mam mały problemik i prosiłbym o pomoc w jego rozwiązaniu:
o to kod problemu:
<?php $a[0]['name'] = 'Alfa'; $a[1]['name'] = 'Beta'; $a[2]['name'] = 'Gamma'; $a[3]['name'] = 'Delta'; $a[4]['name'] = 'Omega'; $a[5]['name'] = 'Pi'; $a[6]['name'] = 'Tau'; $a[7]['name'] = 'Epsilon'; $a[8]['name'] = 'Sigma'; $a[9]['name'] = 'Lambda'; $a[0]['num3'] = $a[0]['num1'] + $a[0]['num2']; $a[1]['num3'] = $a[1]['num1'] + $a[1]['num2']; $a[2]['num3'] = $a[2]['num1'] + $a[2]['num2']; $a[3]['num3'] = $a[3]['num1'] + $a[3]['num2']; $a[4]['num3'] = $a[4]['num1'] + $a[4]['num2']; $a[5]['num3'] = $a[5]['num1'] + $a[5]['num2']; $a[6]['num3'] = $a[6]['num1'] + $a[6]['num2']; $a[7]['num3'] = $a[7]['num1'] + $a[7]['num2']; $a[8]['num3'] = $a[8]['num1'] + $a[8]['num2']; $a[9]['num3'] = $a[9]['num1'] + $a[9]['num2']; /* lp name num1 num2 1. Gamma 3 6 2. Omega 3 4 3. Alfa 3 3 4. Delta 2 4 5. Beta 1 1 */ $p=0; $sortuj[$p]['name'] = "num3"; $sortuj[$p]['sort'] = "DESC"; $sortuj[$p++]['case'] = TRUE; $sortuj[$p]['name'] = "num2"; $sortuj[$p]['sort'] = "DESC"; $sortuj[$p++]['case'] = TRUE; $sortuj[$p]['name'] = "num1"; $sortuj[$p]['sort'] = "DESC"; $sortuj[$p++]['case'] = TRUE; $sortuj[$p]['name'] = "name"; $sortuj[$p]['sort'] = "ASC"; $sortuj[$p++]['case'] = FALSE; { $function = ''; { if (isset($sort[$key]['case']) && ($sort[$key]['case'] == TRUE)) $function .= 'if (strtolower($a["'.$sort[$key]['name'].'"])<>strtolower($b["'.$sort[$key]['name'].'"])) { return (strtolower($a["'.$sort[$key]['name'].'"]) '; else $function .= 'if ($a["'.$sort[$key]['name'].'"]<>$b["'.$sort[$key]['name'].'"]) { return ($a["'.$sort[$key]['name'].'"] '; else $function .= '>'; if (isset($sort[$key]['case']) && ($sort[$key]['case'] == TRUE)) $function .= ' strtolower($b["'.$sort[$key]['name'].'"])) ? 1 : -1; } else'; else $function .= ' $b["'.$sort[$key]['name'].'"]) ? 1 : -1; } else'; } $function .= ' { return 0; }'; } $p=0; $str2 = $str3 = ''; $str1 = '<table><tr><th>lp</th><th>Name</th> <th>Num1</th><th>Num2</th><th>Num3</th>'; sortx($a, $sortuj); { $p++; if ($p<=5) $str2.= "<tr style='background: #fcc;'><td>{$p}</td><td><strong>{$value['name']}</strong></td> <td>{$value['num1']}</td><td>{$value['num2']}</td><td>{$value['num3']}</td>"; else $str3 .= "<tr style='background: #ccc;'><td>{$p}</td><td><strong>{$value['name']}</strong></td> <td>{$value['num1']}</td><td></td><td>{$value['num1']}</td>"; } $str4 = "</td></tr></foot></table>"; ?>
Działający kod znajduje się tutaj: http://www.swos.pl/temp/sortowanie.php
Wizja moja jest następująca:
Cała lista jest sortowane wg. wartości NUM3, ale tylko dla pierwszych 5 NAJWYŻSZYCH wartości, a potem jest sortowanie wg. NUM1.
W tej chwili wyniki są w połowie spaczone.
Gdyż sortuje wg. NUM3, ale sortowanie wg. NUM1 nie działa, a nie można zrobić żeby sortowało najpierw wg. NUM1, bo wteyd zostaną spaczone wyniki NUM3(suma NUM1 i NUM2)
Jakie będzie najlepsze rozwiązanie ? Moje pomysły zawodzą.