Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sortowanie
Forum PHP.pl > Forum > Przedszkole
Robomon
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)
netmare
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 winksmiley.jpg
Hazel
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 smile.gif
Robomon
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?
nevt
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. ?>
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.