Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z funkcją
Forum PHP.pl > Forum > Przedszkole
pinki1986
Witam, mam następujący problem:

Jestem początkujący w php, napisałem funkcję która ma generować dwu wymiarową tablicę na podstawie danych wczytanych z pliku. Plik zawiera newsy które mają być wyświetlone, każdy news składa się z trzech informacji - daty, tematu i treści.

Oto jak wygląda funkcja:

Kod
function load_news(){
              $file = fopen("news.n", 'rb');
              $tab = fgetcsv($file, filesize("news.n"), "|");
              fclose($file);
              $licznik = 0;
              for( $i=0; $i < (count($tab)/3); $i++ ){
                  
                  for( $x=0; $x<3; $x++ ){
                      
                      if( $x == 0 ){
                          
                          $news[$i] = array();
                      }
                      
                      $news[$i][$x] = $tab[$licznik];
                      echo "$tab[$licznik]"; //wiersz na potrzeby testów
                      echo "$news[$i][$x]"; //wiersz na potrzeby testów
                      $licznik++;
                  }
              }
              
              return $news;
          }

A oto wynik działania funkcji:

Kod
26-11-2008
    Array[0]
    News1
    Array[1]
    Treść news 1
    Array[2]
    26-11-2008
    Array[0]
    News2
    Array[1]
    Treść news 2
    Array[2]
    26-11-2008
    Array[0]
    News3
    Array[1]
    Treść news 3
    Array[2]
    26-11-2008
    Array[0]
    News4
    Array[1]
    Treść news 4
    Array[2]
    26-11-2008
    Array[0]
    News5
    Array[1]
    Treść news 5
    Array[2]


Pytanie: co jest nie tak?


Z góry dziękuję za pomoc
ayeo
Witam!

Witaj na forum winksmiley.jpg Napisz co chcesz osiągnąć bo inaczej to do niczego nie dojdziemy.

Pozdrawiam!

edit:
  1. <?php
  2. function load_news()
  3. {
  4.    $file = fopen("news.n", 'rb');
  5.  
  6.    $news = array()
  7.    
  8.    while( $data = fgetcsv($file, filesize("news.n"), "|") )
  9.    {
  10.      $news[] = array($data[0], $data[1], $data[3]);
  11.    }
  12.    
  13.    fclose($file);          
  14.    return $news;
  15. }
  16. ?>


Chyba o to chodziło
pinki1986
Dziękuję za odpowiedź, jednak nie do końca o to chodziło, ta funkcja działa podobnie do mojej - za to jest dużo bardziej przejrzysta smile.gif

Chodzi mi o to aby utworzyć tablicę dwu wymiarową która będzie zawierała w poszczególnych wierszach informacje na temat kolejnych newsów.

Kod
  
          | data1 | temat1 | treść1 |
          | data2 | temat2 | treść2 |
          | data3 | temat3 | treść3 |
          | data4 | temat4 | treść4 |
          
          itd...


W obu powyższych funkcjach przy probie wyświetlenia np.
Kod
echo "$news[1][1]"
otrzymuje wynik:
Kod
   Array[1]


A może coś źle robie?

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



Już poradziłem sobie w następujący sposób:

Kod
<?php
       function load_news2(){
           $file = fopen("news.n", 'rb');
           $tab = explode("`", fread($file, filesize("news.n")));
           fclose($file);
           for( $i=0; $i< count($tab); $i++){
               $news[] = explode("|", $tab[$i]);
           }    
           return $news;
       }
   ?>


Delikatnie zmieniłem strukturę pliku, poprzez rozdzielanie informacji dotyczących poszczególnych newsów znakiem "`" i użyciem funkcji explode() zamiast fgetcsv() smile.gif

Dzięki za pomoc.

Pozdrawiam
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.