Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 3 tablice i ich posortowanie - JTZ?
escaflowne
post
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ć?
Go to the top of the page
+Quote Post
Supol
post
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..
Go to the top of the page
+Quote Post
cichy
post
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)
Go to the top of the page
+Quote Post
escaflowne
post
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)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.09.2025 - 17:08