mam problem z przetworzonymi danymi i nie chcą się posortować w tak jak ja żądam.
Korzystam/korzystałem z dwóch rozwiązań które tutaj przedstawię:
Na początek dane wejściowe - nieposortowane:
$dana[22]['punkty']=3 $dana[22]['gole']=3 $dana[22]['bilans']=1 $dana[37]['punkty']=0 $dana[37]['gole']=2 $dana[37]['bilans']=-1 $dana[3]['punkty']=3 $dana[3]['gole']=2 $dana[3]['bilans']=2 $dana[2]['punkty']=0 $dana[2]['gole']=0 $dana[2]['bilans']=-2 $dana[15]['punkty']=0 $dana[15]['gole']=1 $dana[15]['bilans']=-1 $dana[40]['punkty']=3 $dana[40]['gole']=2 $dana[40]['bilans']=1 $dana[19]['punkty']=1 $dana[19]['gole']=1 $dana[19]['bilans']=0 $dana[115]['punkty']=1 $dana[115]['gole']=1 $dana[115]['bilans']=0 $dana[24]['punkty']=3 $dana[24]['gole']=2 $dana[24]['bilans']=1 $dana[4]['punkty']=0 $dana[4]['gole']=1 $dana[4]['bilans']=-1 $dana[33]['punkty']=0 $dana[33]['gole']=1 $dana[33]['bilans']=-2 $dana[11]['punkty']=3 $dana[11]['gole']=3 $dana[11]['bilans']=2
Korzystając z funkcji array_multisort()
<br/>\$dana[{$k}]['punkty']={$klub[$k]['punkty']} <br/>\$dana[{$k}]['gole']={$klub[$k]['strzelone']} <br/>\$dana[{$k}]['bilans']={$klub[$k]['bilans']} ";
Otrzymuje dane posortowane, ale wg ID, a na tym mi nie zależy.
Dlatego wykorzystałem funkcję multisort() dodaną do komentarza funkcji sort()
a przeze mnie odrobinę zmodyfikowaną (chodzi o kolejnosć ASC na DESC)
function multisort($array, $sort_by, $key1, $key2=NULL, $key3=NULL, $key4=NULL, $key5=NULL, $key6=NULL) { // sort by ? foreach ($array as $pos => $val) $tmp_array[$pos] = $val[$sort_by]; // display however you want foreach ($tmp_array as $pos => $val) { $return_array[$pos][$sort_by] = $array[$pos][$sort_by]; $return_array[$pos][$key1] = $array[$pos][$key1]; } return $return_array; }
Skrypt sortuje bardzo dobrze. Tylko dot. subtablicy 'punkty'
ale pozostałe już nie sortuje.
jak naprawić ten błąd ? jak zmodyfikowac funkcję aby pozostałe klucze też sortowała ?
wyniki tej funkcji:
$dana[22]['punkty']=3 //Drugie miejsce $dana[22]['gole']=3 $dana[22]['bilans']=1 $dana[40]['punkty']=3 //Piąte miejsce $dana[40]['gole']=2 $dana[40]['bilans']=1 $dana[3]['punkty']=3 //Trzecie miejsce - przypadkiem trafiło $dana[3]['gole']=2 $dana[3]['bilans']=2 $dana[24]['punkty']=3 //Czwarte miejsce - przypadkiem trafiło $dana[24]['gole']=2 $dana[24]['bilans']=1 $dana[11]['punkty']=3 //Pierwsze miejsce $dana[11]['gole']=3 $dana[11]['bilans']=2 $dana[115]['punkty']=1 $dana[115]['gole']=1 $dana[115]['bilans']=0 $dana[19]['punkty']=1 $dana[19]['gole']=1 $dana[19]['bilans']=0 $dana[4]['punkty']=0 $dana[4]['gole']=1 $dana[4]['bilans']=-1 $dana[33]['punkty']=0 $dana[33]['gole']=1 $dana[33]['bilans']=-2 $dana[2]['punkty']=0 $dana[2]['gole']=0 $dana[2]['bilans']=-2 $dana[37]['punkty']=0 $dana[37]['gole']=2 $dana[37]['bilans']=-1 $dana[15]['punkty']=0 $dana[15]['gole']=1 $dana[15]['bilans']=-1
Czy ktoś ma pomysł jak to rozwiązać ?
Szukając na forum, google - to tylko na php.net spotkałem rozwiązanie które mnie satysfakcjonowało, a na innych stronach ogranicza się bez ID. Inaczej się dzieje tak jak w przypadku funkcji array_multisort() Sortuje prawidłowo, to co chcę, ale nie przypisuje danych posortowanych do pierwszorzędnej tablicy.