Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: 3 tablice i ich posortowanie - JTZ?
Forum PHP.pl > Forum > PHP
escaflowne
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 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ć?
Supol
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, $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..
cichy
yyyyy po co wyważać otwarte drzwi?
[manual:fe1fc73587]array_multisort[/manual:fe1fc73587]

Pozdro winksmiley.jpg
escaflowne
Hmm... Zmodyfikowałem nieznacznie wyżej podany kod i zadziałał jak złoto smile.gif
Ale nie omieszkam też skorzystać z funkcji array_multisort().

Niemniej dziękuję obu za pomoc smile.gif

Co ja bym bez was (czyt. forumowiczów) zrobił smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.