![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 0 Dołączył: 20.02.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam trzy tablice. Powiedzmy, że w pierwszej znajdują się numery zawodników, w drugiej ich imiona, a w trzeciej ilość strzelonych przez nich bramek (tak naprawdę, to tablice są cztery a dane w nich zawarte są zupełnie inne, ale zasada jest taka sama (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ). Każda z tych tablic ma tyle samo elementów. Każdy element z tablicy A odpowiada odpowiednim elementom z tablic B i C, czyli np. element nr. 10 z tablicy A to numer zawodnika, ktorego imię przechowywane jest w elemencie 10 tablicy B, a ilość strzelonych przez tego zawodnika bramek to wartość 10-go elementu z tablicy C. Teraz chciałbym posortować te dane wg. ilości strzelonych bramek. Ale po posortowaniu tablicy C, dane z tablic A i B muszą mieć odpowiednie klucze, odpowiadające kluczom w tablicy C. Jak to zrobić? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 20.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
moze Ci sie przyda..[php:1:0e40f0b7e4]<?
$dane = array ('0&1000&940&180', '1&220&7800&2000', '3&500&2880&750', '0&700&935&140', '2&500&940&160', '0&1500&940&160', '1&300&1440&150', '3&380&740&1800', '2&1000&935&140'); $n = count ($dane); $tmp0 = array(); $tmp1 = array(); for ($i = 0; $i < $n; $i++) { $ex = explode("&",$dane[$i]); $tmp0[$i] = $ex[0]; $tmp1[$i] = $ex[1]; } $nmb = array (); for ($i = 0; $i < $n; $i++) { $nmb[$i] = $i; } function cmp ($a, $(IMG:http://forum.php.pl/style_emoticons/default/cool.gif) { global $tmp0, $tmp1; if ($tmp0[$a] != $tmp0[$b]) { return $tmp0[$a] - $tmp0[$b]; } else { return $tmp1[$a] - $tmp1[$b]; } } usort ($nmb, "cmp"); unset ($tmp0); // juz niepotrzebne unset ($tmp1); // juz niepotrzebne $temp = array(); for ($i = 0; $i < $n; $i++) { $temp[$i] = $dane[$nmb[$i]]; } unset ($nmb); // juz niepotrzebne $dane = $temp; unset ($temp); // juz niepotrzebne for ($i = 0; $i < $n; $i++) { echo ("$i:$dane[$i]<br>"); } ?> ?>[/php:1:0e40f0b7e4] ps. kod nie mojego autorstwa.. |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 197 Pomógł: 0 Dołączył: 9.09.2003 Skąd: z Marsa Ostrzeżenie: (0%) ![]() ![]() |
yyyyy po co wyważać otwarte drzwi?
[manual:fe1fc73587]array_multisort[/manual:fe1fc73587] Pozdro (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 0 Dołączył: 20.02.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Hmm... Zmodyfikowałem nieznacznie wyżej podany kod i zadziałał jak złoto (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ale nie omieszkam też skorzystać z funkcji array_multisort(). Niemniej dziękuję obu za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Co ja bym bez was (czyt. forumowiczów) zrobił (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.09.2025 - 17:08 |