Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Sortowanie
MateuszS
post 27.07.2009, 19:56:33
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


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
vokiel
post 27.07.2009, 21:03:01
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 27.07.2009, 21:08:58
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 27.07.2009, 21:09:23
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


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
erix
post 27.07.2009, 21:45:03
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ść?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
MateuszS
post 27.07.2009, 22:02:38
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


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
vokiel
post 27.07.2009, 23:06:30
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 28.07.2009, 13:19:27
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


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
erix
post 28.07.2009, 13:33:51
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. tongue.gif

fgets" title="Zobacz w manualu PHP" target="_manual


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
MateuszS
post 28.07.2009, 14:12:31
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??


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
nospor
post 28.07.2009, 14:15:47
Post #11





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




Przeciez w linku co podal erix masz wyraźnie po polsku napisane...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MateuszS
post 28.07.2009, 14:22:40
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


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
nospor
post 28.07.2009, 14:23:57
Post #13





Grupa: Moderatorzy
Postów: 36 557
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MateuszS
post 28.07.2009, 15:24:56
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


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
erix
post 28.07.2009, 17:11:13
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. 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ą)


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
MateuszS
post 29.07.2009, 11:39:07
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. ?>


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
erix
post 29.07.2009, 18:31:14
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


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
MateuszS
post 30.07.2009, 10:54:47
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


--------------------
O! Zimniok :P
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: 12.06.2025 - 22:31