Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sortowanie
MateuszS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Witam, mam taki kod.

  1. <?php
  2. for($o=1; $o<=$liczba_szkol; $o++)
  3. {
  4. $file = fopen($plik_value[$o], 'r');
  5. $read = fread($file, 999);
  6.  
  7. echo '<tr>';
  8. echo '<td>'.$o.'</td><td>'.$read.'</td><td>'.$wojewodztwo[$o].'</td><td>'.$nazwa[$o].'</td>';
  9. echo '</tr>';
  10. }
  11. ?>


Jak posortować ta tabele tak aby przy $o = 1 byla najwieksza $read i tak dalej? 1. najwieksza 2. mniejsza itd. Oczywiscie musza tez sie zgadzac wojewodztwo i nazwa, to wszystko ma byc posortowane od najwiekszego read

Ten post edytował MateuszScirka 27.07.2009, 20:06:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Wczytujesz pliki do tablicy, potem używasz na wybranej kolumnie którejś z funckji: arsort" title="Zobacz w manualu PHP" target="_manual, ksort" title="Zobacz w manualu PHP" target="_manual, krsort" title="Zobacz w manualu PHP" target="_manual, rsort" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
dangesamurai
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 27.07.2009

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


wraz ze wzrostem $o dekrementuj $licznik=$licznik-1;


  1. <?php
  2. $licznik=999;
  3. for($o=1; $o<=$liczba_szkol; $o++)
  4. {
  5. $file = fopen($plik_value[$o], 'r');
  6. $read = fread($file, $licznik);
  7. $licznik=$licznik-1;
  8.  
  9. echo '<tr>';
  10. echo '<td>'.$o.'</td><td>'.$read.'</td><td>'.$wojewodztwo[$o].'</td><td>'.$nazwa[$o].'</td>';
  11. echo '</tr>';
  12. }
  13. ?>
Go to the top of the page
+Quote Post
MateuszS
post
Post #4





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Próbowałem tak

$tablica = array($read);
$lolx = rsort($tablica[$o]);

i na wiele innnych sposobow ale lipa, prosze jakies gotowe porady bo mecze sie z tym caly wieczor, manual i google przeszukane jednak znalazlem tylko sortowanie zwyklych tablic

dangesamurai, wlepilem ten kod i nie dziala, co trzeba dodac?

Ten post edytował MateuszScirka 27.07.2009, 21:15:01
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Próbowałem tak

$tablica = array($read);
$lolx = rsort($tablica[$o]);

Może podaj przykładową zawartość tablicy wraz z mapowaniem klucz<->wartość?
Go to the top of the page
+Quote Post
MateuszS
post
Post #6





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


sprobowalem tak

$lolx = array($read[$o] => $o);
$zonk = rsort($lolx);
potem

$zonk = array($read);
sort($zonk)
potem

$lolx = array($read => $o);
$zonk = rsort($lolx);


ze wszystkimi sortami, rsortami itd. pokazuja sie same jedynki we wszystkich wierszach, po prostu nie wiem jak to zrobic ;/

prosze o gotowe rozwiazanie. ;(

Ten post edytował MateuszScirka 27.07.2009, 22:17:03
Go to the top of the page
+Quote Post
vokiel
post
Post #7





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Jak napisał erix daj nam tu
  1. <?php
  2. print_r($read);
  3. // lub
  4. var_dump($read);
  5. ?>
Go to the top of the page
+Quote Post
MateuszS
post
Post #8





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Normalnie wyswietlaja mi sie cyfry

7
3
5
2

w wierszach
probowalem

  1. <?php
  2. for($f=0; $f<=$liczba_post-1; $f++)
  3. {
  4.    $file = fopen($plik_value[$o], 'r');
  5.    $read = fread($file, 999);
  6.    $table = array($read);
  7.    sort($table);
  8. }
  9. for($o=1; $o<=$liczba_szkol; $o++)
  10. {
  11.  
  12. $t = $o+1;
  13. echo '<tr>';
  14. echo '<td>'.$o.'</td><td>'.$table[$f].'</td><td>'.$wojewodztwo[$o].'</td><td>'.$nazwa[$o].'</td>';
  15. echo '</tr>';
  16. }
  17. ?>


ale lipa

Ten post edytował MateuszScirka 28.07.2009, 13:28:56
Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Źle tablicę konstruujesz.

  1. <?php
  2. $read = fread($file, 999);
  3.   $table = array($read);
  4. ?>

Przecież to będzie zawsze zawierało tylko jeden element. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

fgets" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
MateuszS
post
Post #10





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


fgets pobiera wszystkie??
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Przeciez w linku co podal erix masz wyraźnie po polsku napisane...
Go to the top of the page
+Quote Post
MateuszS
post
Post #12





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Nospor: Jest po angielsku.

Ok, poprobuje dam znac jak wyszlo
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Ja kliknalem ten link i mam po polsku. Widac mam tak ustawione. No ale nie problem, bys na gorze tej strony kliknal sobie:
view this page in Polish
Go to the top of the page
+Quote Post
MateuszS
post
Post #14





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Wydaje mi sie ze poprawnie to robie

  1. <?php
  2. for($f=0; $f<=$liczba_szkol-1; $f++)
  3. {
  4.    $file = fopen($plik_value[$f], 'r');
  5.    if(!feof($file))
  6.    {
  7.        $read = fgets($file, 999);
  8.    }
  9.    $table = array($read);
  10.    arsort($table);
  11. }    
  12.    
  13.  
  14.  
  15. for($o=1; $o<=$liczba_szkol; $o++)
  16. {
  17.  
  18. $t = $o-1;
  19. echo '';
  20. echo ''.$o.''.$table[$t].''.$wojewodztwo[$o].''.$nazwa[$o].'';
  21. echo '';
  22.  
  23. }
  24. fclose($file);
  25. ?>



kupa errorow,

  1. <?php
  2. for($f=0; $f<=$liczba_szkol-1; $f++)
  3. {
  4.    $file = fopen($plik_value[$f], 'r');
  5.  
  6.    $table = array($read);
  7.    arsort($table);
  8. }    
  9.    
  10.  
  11.  
  12. for($o=1; $o<=$liczba_szkol; $o++)
  13. {
  14.  
  15. $t = $o-1;
  16. echo '';
  17. echo ''.$o.''.$table[$t].''.$wojewodztwo[$o].''.$nazwa[$o].'';
  18. echo '';
  19.  
  20. }
  21. fclose($file);
  22. ?>


pusta tabela. Przejrzalem komentarze w manualu, staralem sie do nich dostosowac ale nic z tego nie wychodzi

dodam jeszcze

  1. <?php
  2. $nazwa[1] = 'Szkoła '; $wojewodztwo[1] = 'a';    $plik_value[1] = './szkoly/szkola1.txt';
  3. $nazwa[2] = 'Gimnazjum ';        $wojewodztwo[2] = 'a';    $plik_value[2] = './szkoly/szkola2.txt';
  4. $nazwa[3] = 'Liceum';                $wojewodztwo[3] = 'b';   $plik_value[3] = './szkoly/szkola3.txt';
  5. $nazwa[4] = 'Przedszkole';                 $wojewodztwo[4] = 'b';   $plik_value[4] = './szkoly/szkola4.txt';
  6. ?>


chce posortowac wg zawartosci liczbowej plikow $plik_value[]

Ten post edytował MateuszScirka 28.07.2009, 15:26:20
Go to the top of the page
+Quote Post
erix
post
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Wydaje mi sie ze poprawnie to robie

Nie robisz poprawnie, bo tworzysz zmienną $table, ale tylko dla jednej (ostatniej) szkoły, bo ją cały czas nadpisujesz. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Cytat
chce posortowac wg zawartosci liczbowej plikow $plik_value[]

Przerób strukturę, bo raz:
  • kolejna pętla do wykonania
  • kolejne pliki do analizy
  • ciężkie do sortowania (zrób sobie tablicę wielowymiarową)
Go to the top of the page
+Quote Post
MateuszS
post
Post #16





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


OK. Pobawię się tablicami. Właśnie wiedziałem że mi się to nadpisuję jednak nie miałem pojęcia jak to zmienić. Dam znać jak się uda

OK udalo mi sie posortowac z pomocą te glosy od najwiekszego do najmniejszego jednak trzeba rowniez jakos posortowac reszte tabeli wg tych glosow, macie jakies pomysly??

  1. <?php
  2. for($o=1; $o<=$liczba_szkol; $o++)
  3. {
  4. $file = fopen($plik_value[$o], 'r');
  5. $read[$o] = fgets($file, 999);
  6.  
  7. }
  8. rsort($read);
  9. for($p=0; $p<=$liczba_szkol-1; $p++)
  10. {
  11. $lp = $p+1;
  12. echo '<tr>';
  13. echo '<td>'.$lp.'</td><td>'.$read[$p].'</td><td>'.$wojewodztwo[$p].'</td><td>'.$nazwa[$p].'</td>';
  14. echo '<tr>';
  15. }
  16. ?>
Go to the top of the page
+Quote Post
erix
post
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
najmniejszego jednak trzeba rowniez jakos posortowac reszte tabeli wg tych glosow, macie jakies pomysly??

A konkretniej? resztę tabeli
Go to the top of the page
+Quote Post
MateuszS
post
Post #18





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Mam taki skrypt

  1. <?php
  2. $refszkoly=array();
  3. $szkol=array();
  4. for($o=0; $o<$liczba_szkol; $o++)
  5. {
  6.    $file = fopen($plik_value[$o], 'r');
  7.    $line = fgets($file, 999);
  8.    fclose($file);
  9.    $splited = explode('|', $line);
  10.    $refszkoly[$o]=(int)$splited[0];
  11.    $szkol[$o]=$splited;
  12. }
  13.  
  14.  
  15. arsort($refszkoly);
  16.  
  17. $zliczam=0;
  18. foreach ($refszkoly as $id=>$count)
  19. {    
  20.    $zliczam++;
  21.    echo '<tr><td>'.$zliczam.'</td><td>'.$count.'</td><td>'.$szkol[$id][1].'</td><td>'.$szkol[$id][2].'</td></tr>';
  22. }
  23. ?>



Niby sortuje fajnie ale nie moge dodac glosu na 4 szkole nie wiem czemu, a jak zmienie w pliku 4 szkole to przy wyswietlaniu rozwala sie plik 3 a nie 4... ciezko to wytlumaczyc. Zobaczcie sami

http://mateuszs.pl/praca/glosowanie/glosowanie.php
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 21:18