Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Sortowanie pliku csv z poziomu php
OlgaG
post 5.10.2007, 17:13:24
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 8.04.2007

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


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?
Go to the top of the page
+Quote Post
mainfreme
post 5.10.2007, 18:31:09
Post #2





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.09.2007

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


Zobacz do manuala funkcja Sort
Go to the top of the page
+Quote Post
OlgaG
post 6.10.2007, 06:19:20
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 8.04.2007

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


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?
Go to the top of the page
+Quote Post
tsharek
post 6.10.2007, 07:39:33
Post #4





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

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


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. ?>


--------------------
Go to the top of the page
+Quote Post
OlgaG
post 6.10.2007, 15:03:12
Post #5





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 8.04.2007

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


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
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 Wersja Lo-Fi Aktualny czas: 16.07.2025 - 03:25