Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Sortowanie pliku csv z poziomu php
Forum PHP.pl > Forum > Przedszkole
OlgaG
Mam pytanko: mam plik csv. Wczytałam go sobie za pomocą funkcji fgetcsv(). Wyświetla mi się cała zawartość. Super! Czy da się z poziomu php i mając do dyspozycji tylko ten plik csv jakoś posortować zawartość tego pliku? Np. mam kolumny imie;nazwisko;adres i z poziomu php chcę tak zrobić by wyniki były posortowane wg np. imienia?
mainfreme
Zobacz do manuala funkcja Sort
OlgaG
No dobra, ale przecież jak wyświetlam zawartość pliku csv to każdy wiersz jest osobną tabelą. W dodatku u mnie to wygląda tak, że ten array ma tylko jedną wartość i klucz:

  1. <?php
  2. array(1) { [0]=> string(44) "imie;nazwisko;adres" }
  3. ?>


Jak po 100 osobnych tablicach zrobić sortowanie?
tsharek
To jest wielowymiarowa tablica. Można ją posortować za pomocą usort" title="Zobacz w manualu PHP" target="_manual (pisane z palca, przeróbka manuala, więc mogę się pomylić:)
  1. <?php
  2. function cmp($a, $b)
  3. {
  4.  if ($a['imie'] == $b['imie']) {
  5.  return 0;
  6.  }
  7.  return (strcmp($a['imie'], $b['imie']) ? -: 1;
  8. }
  9.  
  10. usort($tablica_wielowymiarowa, "cmp");
  11. ?>
OlgaG
Ja to zrobiłam w końcu tak:

  1. <?php
  2. function sortuj($a){
  3.  
  4. $plik = "dane.csv";
  5. $dane = file($plik);
  6.  
  7. foreach($dane as $klucz=>$wartosc){
  8.  
  9. $wartosc = explode(";", $dane[$klucz]);
  10. $dane[$klucz] = $wartosc;
  11.  
  12. }
  13.  
  14. foreach($dane as $klucz=>$wiersz){
  15.  
  16. $nazwa[$klucz] = $wiersz[$a];
  17. }
  18.  
  19. array_multisort($nazwa, SORT_ASC, $dane);
  20.  
  21. for($i = 0; $i<$num = count($dane); $i++){
  22. for($j = 0; $j < 4; $j++){
  23.  
  24. $wart = $dane[$i][$j];
  25. if($j <> 3){
  26.  
  27. echo "{$wart}<br/>";
  28. }
  29.  
  30. else{
  31.  
  32. echo "{$wart}<br/><hr/>";
  33. }
  34. }
  35.  
  36. }
  37.  
  38. }
  39. ?>


Zastanawiam się tylko, dlaczego jak odwrócę kolejność warunków w ostatnim if'ie to ta funkcja nie działa? dry.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.