Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Sortowanie tablicy, Pobranie pliku, posortowanie i zapisanie
mariusz g
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 25.03.2006

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


hej

z bazy zostaje wygenerowany taki plik:

545,Bmw,Z3,12,2006,2008,:
454,MBW,Z3,52,2001,2005,:
542,Bmw,Z3,85,2002,2004,:
541,Bmw,Z3,78,2008,2001,:
445,Bmw,Z3,99,2004,2004,:

(oczywiście wszystko w jednej linii - rozdzieliłem żeby było czytelne)
wiersze oddzielone - ; a rekordy - ,


teraz chciałem go pobrać posortować i zapisać posortowany (np sortowanie po roku)

pomóżcie bo kombinuję i nic mi nie wychodzi
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
specialplan
post
Post #2





Grupa: Zarejestrowani
Postów: 206
Pomógł: 21
Dołączył: 1.09.2006
Skąd: Edinburgh

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


poczytaj o explode" title="Zobacz w manualu PHP" target="_manual oraz o sortowaniu tablic, np asort" title="Zobacz w manualu PHP" target="_manual albo sort" title="Zobacz w manualu PHP" target="_manual etc...
Go to the top of the page
+Quote Post
nitek
post
Post #3





Grupa: Zarejestrowani
Postów: 209
Pomógł: 37
Dołączył: 27.02.2008
Skąd: Kwidzyn

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


przyda ci się pewnie:
file
explode
i
sort


--------------------
Go to the top of the page
+Quote Post
specialplan
post
Post #4





Grupa: Zarejestrowani
Postów: 206
Pomógł: 21
Dołączył: 1.09.2006
Skąd: Edinburgh

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


file_get_contents" title="Zobacz w manualu PHP" target="_manual - napisal przeciez ze wszystko ma w jednej linii...

Ten post edytował specialplan 4.03.2008, 12:14:40
Go to the top of the page
+Quote Post
nitek
post
Post #5





Grupa: Zarejestrowani
Postów: 209
Pomógł: 37
Dołączył: 27.02.2008
Skąd: Kwidzyn

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


Cytat(specialplan @ 4.03.2008, 12:14:24 ) *
[manual\]file_get_contents\[/manual\] - napisal przeciez ze wszystko ma w jednej linii...


ok, sorry - nie doczytałem..
Ale i tak łatwiej będzie rzucić to w kilka linii i wtedy obrobić (jeśli oczywiście jest taka opcja) winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
specialplan
post
Post #6





Grupa: Zarejestrowani
Postów: 206
Pomógł: 21
Dołączył: 1.09.2006
Skąd: Edinburgh

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


Najlepiej by bylo, gdyby kazdy rekord mial w nowej linii - nie mozna tak pliku wygenerowac, panie autor?winksmiley.jpg
Go to the top of the page
+Quote Post
mariusz g
post
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 25.03.2006

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


coś napisałem, ale zbyt to zakręcone :

  1. <?
  2.  
  3. $plik = "test";
  4. $file = file($plik);
  5.  
  6. foreach($file as $value) {
  7. $exp = explode(":",$value);
  8.  // sort($exp);
  9. }
  10.  
  11. $i = 0;
  12. while($i < 10){
  13.  
  14. //echo $exp[$i].'<br/>';
  15.  
  16. $dane = explode(",",$exp[$i]);
  17.  
  18. //sort($dane);
  19.  
  20. echo $dane['0']." - ".$dane['1']." - ".$dane['2']." - ".$dane['3']." - ".$dane['4']." - ".$dane['5'];  
  21. echo"<br />";
  22. $i++;
  23. } 
  24.  
  25. ?>
Go to the top of the page
+Quote Post
nowotny
post
Post #8





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Sam generujesz ten plik z bazy...? Nie możesz od razu użyć takiego zapytania żeby ci posortowało wszystko...?
Go to the top of the page
+Quote Post
mariusz g
post
Post #9





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 25.03.2006

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


tak jest zrobione, ale założenia są takie - aby raz wygenerować plik posortowany, a później jeśli będzie potrzeba przesortowania po innej kolumnie i bez użycia bazy aby jej nie obciążać

zrobiłem tak
ale nie wiem czy to dobry pomysł

proszę skomentujcie

  1. <?
  2. $nazwa ="xx"; //nazwa pliku a w nim taki schemat xx,xx,xx,xx,xx;xx,xx,xx,xx,xx,;
  3.  
  4. $file=file($nazwa);
  5. foreach ($file as $value8) {
  6.  $exp8 = explode(";",$value8);  
  7. }
  8. $ile = count($exp8);
  9. $ile --;
  10. $i =0; 
  11. while ($i < $ile) {
  12.  $exp2 = explode(",",$exp8[$i]);
  13.  $dane[] = array('A' => $exp2[0], 'B' => $exp2[1],'C' => $exp2[2],'D' => $exp2[3],'E' => $exp2[4]);
  14. $i++;
  15. }
  16.  
  17. foreach ($dane as $klucz => $wiersz) {
  18. $numer[$klucz] = $wiersz['C'];
  19. }
  20.  
  21. array_multisort($numer, SORT_ASC, $dane);
  22. //array_multisort($numer, SORT_DESC, $dane);
  23.  
  24. unlink($nazwa);
  25. $f = $nazwa;
  26. $fp = fopen($f, "a");  // uchwyt pliku, otwarcie do dopisania 
  27. flock($fp, 2); // blokada pliku do zapisu 
  28.  
  29. $i =0; 
  30. while ($i < $ile) {
  31.  $polacz[] = implode(",", $dane[$i]);
  32.  //$do_zapisu = $polacz[$i].";";
  33.  fwrite($fp, $polacz[$i].";" );
  34. $i++;
  35. }
  36.  
  37. echo $do_zapisu;
  38. flock($fp, 3); // odblokowanie pliku 
  39. fclose($fp);  // zamknięcie pliku
  40. ?> 
  41.  
  42. <pre>
  43. <?php
  44. //var_dump($dane);
  45. //print_r ($exp8);
  46. // print_r ($dane);
  47. //print_r ($polacz);
  48. ?>
  49. </pre>
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: 21.08.2025 - 16:09