Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie
Forum PHP.pl > Forum > Gotowe rozwiązania
piotrdd2
Jak zrobić sortowanie rosnąco lub malejąco w kolumnie gdzie znajduje się zmienna $line_dane[1] ?

[php:1:13a3dad197]<?php
$dane=file("zw.txt");

for($i=0;$i<count($dane);$i++)
{
$line_dane=explode("|^^^|", $dane[$i]);
echo "<tr CLASS=dane>
<td>$line_dane[0]</td>
<td><b>$line_dane[1]</b></td>
</td>
</tr>";
}
?>[/php:1:13a3dad197]
Jabol
może usort?
piotrdd2
Nie znam się za bardzo, ale stworzyłem takie coś i nie chce działać

[php:1:c40226a516]<?php
function cmp ($a, $cool.gif {
if ($a == $cool.gif return 0;
return ($a > $cool.gif ? -1 : 1;
}
$dane=file("zw.txt");
for($i=0;$i<count($dane);$i++)
{
$line_dane=explode("|^^^|", $dane[$i]);

$a = array ($line_dane[1]);
usort ($a, "cmp");
while (list ($key, $value) = each ($a)) {

echo "<tr CLASS=dane>
<td>$line_dane[0]</td>
<td><b>$value</b></td>
</td>
</tr>";
}
}
?>[/php:1:c40226a516]
Sir Blade
kod napisal steru (tak mi sie wydaje ) TAK steru sprawdzilem smile.gif

[php:1:935862db75]<?php
function sortuj($in,$sep,$nr)
{
for($i=0;$i<count($in);$i++)
{
$ex=explode($sep,$in[$i]);
$tmp[]=$ex[$nr];
}
array_multisort($tmp,SORT_NUMERIC,SORT_DESC,$in); // desc lub asc
unset($tmp);
return $in;
}


$dane=file('jakis_tam_plik.txt');
$dane=sortuj($dane,';',2); // sortuje wedlug 3 kolumny a separatorem jest ;


?>[/php:1:935862db75]

no a potem tylko wypisac tablice $dane
Jabol
ja bym to zrobił tak[php:1:20dc64c87b]<?php
function cmp($_a, $_b){
$a=explode('|^^^|', $_a);
$b=explode('|^^^|', $_b);
if($a[1] == $b[1]){
return 0;
}
return ($a[1]>$b[1])?-1:1;
}

$dane=file("zw.txt");
usort($dane, "cmp");
for($i=0;$i<count($dane);$i++){
$linia=explode('|^^^|', $dane[$i]);
echo "<tr CLASS=dane>
<td>{$lina[0]}</td>
<td><b>{$linia[1]}</b></td>
</td>
</tr>";
}
}
?>[/php:1:20dc64c87b]
piotrdd2
Dobrze sortuje, tylko że nie chce wyświetlić pierwszej kolumny
a i chyba jest tam na końcu o jedną klamre za dużo?[php:1:c5074c3ae0]<td>{$lina[0]}</td>[/php:1:c5074c3ae0]
Jabol
a popatrz na nazwy zmiennych. Ja błąd znalazłem. Teraz Ty spróbuj. Moja podpowiedź. To nie wina klamr, tylko nazw.
piotrdd2
już znalazłem biggrin.gif

Dzieki za pomoc!
piotrdd2
a jak są do sortowania liczby dwucyfrowe i więcej, to wtedy będzie sortować według pierwszej jednostki tzn.

8
40
4
3
2
10
1


trzeba użyć innej funkcji? aby było:

40
10
8
4
3
2
1
piotrdd2
czyli odnośnie wcześniejszych postów zamieniam na [php:1:374f429f7c]
<?php
usort($dane, "strnatcmp");
?>[/php:1:374f429f7c]

sortuje dobrze tylko że pierwszą kolumnę sad.gif
a co zrobić żeby sortowało według drugiej, i w kolejności od największej do najmniejszej, co jeszcze trzeba zmienić?
piotrdd2
ok, z jednym sobie poradziłem z sortowaniem od najwiekszej do najmniejszej [php:1:8db83c94c1]<?php
$tablica1 = array_reverse($tablica);
?>[/php:1:8db83c94c1]

tylko nadal nie wiem czemu sortuje wg. pierwszej kolumny?
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-2024 Invision Power Services, Inc.