Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [płaska baza] sortowanie foreach
Forum PHP.pl > Forum > Gotowe rozwiązania
Tomplus
w opcji SZUKAJ nie znalazłem żadnej informacji dot. mojego problemu więc prosze łaskawie o odpowiedz

o to kod
  1. <?php
  2. $dane = file(&#092;"baza_rank2.txt\") or die('nie ma pliku z danymi'); 
  3.  echo &#092;"<table border=0>\";
  4. function cmp ($a, $b) { 
  5. if (intval($a) == intval($b)) return 0; 
  6. return (intval($a) > intval($b)) ? 1 : -1; 
  7. } 
  8.  
  9. rsort($dane, &#092;"cmp\"); 
  10. foreach($dane as $linia) 
  11. { 
  12.  
  13. $k = explode(&#092;"|\", chop($linia)); 
  14.  
  15.  $pkt[0]=number_format($k[0], 3, ',', ' ');
  16.  $pkt[1]=number_format($k[3], 3, ',', ' ');
  17.  
  18.  $i[0]++;
  19.  echo &#092;"<tr><td>\".$i[0].\".</td><td>\".$k[1].\"</td><td></td><td>\".$pkt[0].\" pkt.</td><td>(\".$pkt[1].\")</td></tr>\";
  20.  
  21. }
  22.  fclose($file);
  23. ?>


a tu kawałek bazy
Kod
3.592|Ceramika Opoczno|1|0.079|1|3.008|
3.759|GKS Katowice|1|0.011|2|3.084|
3.5035|KSZO Ostrowiec|1|-0.032|3|3.09|
3.597|Legia Warszawa|1|-0.066|4|2.987|
2.657|Obra Kościan|1|0.076|5|1.95|2.044|
3.399|Pelikan Łowicz|1|0.037|6|3.086|3.052|
3.001|Polonia Przemyśl|1|0.087|7|2.093|2.15|
2.719|Ruch Chorzów|1|0.066|8|2.119|2.195|
2.694|Ruch Radzionków|1|0.019|9|2.127|2.185|
1.817|Szczakowianka |1|-0.056|10|1.98|1.921|


jeżeli ktoś nie zauwazył to skrypt sortuje baze wg. $k[0] czyli tego co jest na początku
mój problem to jak zrobić aby nie kompliować sobie sprawy zastosowaniem kolejnego pliku aby móc sortować wg. zmiennej np. $k[4]questionmark.gif

chyba że ktoś pomoże zrobić mi taki mały skrypcik innym (pewnie lepszym) zupełnie sposobem
dr_bonzo
Chcesz porownywac wg indexu 4
  1. <?php
  2. //$a i $b sa elementami sortowanej tablicy
  3. function cmp ($a, $b) { 
  4. // czemu przy porownywaniu floatow konwertujesz je do inta?
  5. if ( floatval($a[ 4 ] ) == floatval( $b[ 4 ] ) )
  6. {
  7. return 0; 
  8. }
  9.  
  10. return ( floatval( $a[ 4 ] ) > floatval( $b[ 4 ] ) ) ? 1 : -1; 
  11. }
  12. ?>

intval( $a ) --> konwertuje TABLICE do inta
Tomplus
tylko dlaczego mi ta funkcja nie działa?

Fatal error: Call to undefined function: floatval() in

intval działa bez problemu
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-2024 Invision Power Services, Inc.