Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie
piotrdd2
post
Post #1





Grupa: Zarejestrowani
Postów: 136
Pomógł: 2
Dołączył: 13.05.2003
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Jabol
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


może usort?
Go to the top of the page
+Quote Post
piotrdd2
post
Post #3





Grupa: Zarejestrowani
Postów: 136
Pomógł: 2
Dołączył: 13.05.2003
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
Sir Blade
post
Post #4





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 7.06.2002

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Jabol
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
piotrdd2
post
Post #6





Grupa: Zarejestrowani
Postów: 136
Pomógł: 2
Dołączył: 13.05.2003
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
Jabol
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


a popatrz na nazwy zmiennych. Ja błąd znalazłem. Teraz Ty spróbuj. Moja podpowiedź. To nie wina klamr, tylko nazw.
Go to the top of the page
+Quote Post
piotrdd2
post
Post #8





Grupa: Zarejestrowani
Postów: 136
Pomógł: 2
Dołączył: 13.05.2003
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


już znalazłem biggrin.gif

Dzieki za pomoc!
Go to the top of the page
+Quote Post
piotrdd2
post
Post #9





Grupa: Zarejestrowani
Postów: 136
Pomógł: 2
Dołączył: 13.05.2003
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
scanner
post
Post #10





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




http://www.php.net/manual/pl/function.natsort.php


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
piotrdd2
post
Post #11





Grupa: Zarejestrowani
Postów: 136
Pomógł: 2
Dołączył: 13.05.2003
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
piotrdd2
post
Post #12





Grupa: Zarejestrowani
Postów: 136
Pomógł: 2
Dołączył: 13.05.2003
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 10:20