Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sortowanie tablicy
Forum PHP.pl > Forum > Przedszkole
mariusz g
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
nitek
przyda ci się pewnie:
file
explode
i
sort
specialplan
file_get_contents" title="Zobacz w manualu PHP" target="_manual - napisal przeciez ze wszystko ma w jednej linii...
nitek
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
specialplan
Najlepiej by bylo, gdyby kazdy rekord mial w nowej linii - nie mozna tak pliku wygenerowac, panie autor?winksmiley.jpg
mariusz g
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. ?>
nowotny
Sam generujesz ten plik z bazy...? Nie możesz od razu użyć takiego zapytania żeby ci posortowało wszystko...?
mariusz g
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>
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.