Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Sortowanie
-Robomon-
post
Post #1





Goście







Witam, mam taki kod php w pliku x.php
  1. <?php
  2. $file = "info.txt";
  3. $contents= file($file);
  4. $output='';
  5. foreach($contents as $line){
  6. $line_array=explode('`',$line);
  7. $link = str_replace(' ', '', $line_array[1]);
  8. echo "<a onClick='".$link."()' onMouseOver='".$link."img()'>".$line_array[1]." <i>(".$line_array[2].")</i></a><br>";
  9. }
  10. ?>

Wyświetla on coś w stylu
Cytat
Blabla (2001)

Gdy w pliku info.txt jest więcej linii to wyświetla tak
Cytat
Blabla (2001)
Hehe (2000)
Nazwa (2008)

No właśnie jakiej funkcji i gdzie użyć aby wszystko było wyświetlane od największego roku do najmniejszego?
Cytat
Nazwa (2008)
Blabla (2001)
Hehe (2000)
Go to the top of the page
+Quote Post
netmare
post
Post #2





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


Tak łatwo to chyba nie ma, żeby to jakąś funkcją załatwić.
Najpierw dla każdego tytułu użyj strpos i substr, bądź wyrażeń regularnych żeby wyciągnąć rok z pomiędzy nawiasów. A następnie poczytaj o którymś z popularnych algorytmów sortowania, na wiki znajdziesz napewno wyjaśnione łopatologicznie np sortowanie metodą bąbelkową. I po temacie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Hazel
post
Post #3





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


Zwijasz po kolei $line_array[1] do tablicy, używasz sort" title="Zobacz w manualu PHP" target="_manual i wyświetlasz po kolei elementy nowej tablicy.
Najprostszy sposób (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-Robomon-
post
Post #4





Goście







No tak stworzyłem takie coś:
  1. <?php
  2. $file = "info.txt";
  3. $contents= file($file);
  4. foreach($contents as $line => $row){
  5. $wartosc[$line] = $row[2];
  6. }
  7. array_multisort($wartosc, SORT_DESC, $contents);
  8. foreach ($contents as $line => $wartosc){
  9. $line_array=explode('`',$wartosc);
  10. $link = str_replace(' ', '', $line_array[1]);
  11. echo $line_array[0]." ".$line_array[1];
  12. }
  13. ?>

Plik info.txt ma:
Cytat
Bla1`1998
Bla2`1999
Bla3`1000

No i na stronie x.php wyświetla:
Cytat
Bla3 1000
Bla1 1998
Bla2 1999

Rzecz w tym że nie ważne jaką flagę wpiszę w
  1. <?php
  2. array_multisort($wartosc, SORT_DESC, $contents);
  3. ?>
zawsze wyświetla tak samo, nawet gdy jest
  1. <?php
  2. array_multisort($wartosc, SORT_ASC, $contents);
  3. ?>
, a chce żeby wyświetlało w odwrotnej kolejności czyli:
Cytat
Bla2 1999
Bla1 1998
Bla3 1000

Co jest nie tak?
Go to the top of the page
+Quote Post
nevt
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


nie działa bo sortujesz nie tą tablicę którą potem wyświetlasz... powinno być:
  1. <?php
  2. array_multisort($contents, SORT_DESC, $wartosc);
  3. ?>
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: 23.08.2025 - 05:16