Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tworzenie tablicy tablic z pliku .csv
Forum PHP.pl > Forum > PHP
Lolek13
Witam wszystkich,

Znalazłem kod do pobierania danych z plików csv

  1. $wiersz = 1;
  2. if (($plik = fopen ("numer.csv","r")) !== FALSE)
  3. {
  4. while (($data = fgetcsv($plik, 1000, ",")) !== FALSE)
  5. {
  6. $wiersz++;
  7. $c = 0; //kolumna
  8.  
  9. echo $num1 = $data[$c]; //numer
  10. echo $sender = $data[$c+1]; //nadawca
  11. echo $mess = $data[$c+2]; //wiadomosc
  12. echo "<br>";
  13. }
  14. fclose($plik);

Kod ten daje mi oczekiwane rezultaty i teraz chciałbym stworzyć na podstawie danych z odpowiedniego pliku tablice tablic ...

mianowicie:

  1. $messages = array(
  2. array("recipient" => "48".$num1, "msgText" => $mess, "sender" => $sender,
  3. "type" => "1", "delivTime" => "0")
  4. );


czyli chciałbym osiągnąc efekt gdy głowna tablica sklada sie z takiej ilosci "podtablic" ile jest wierszy danych w pliku csv. niestety nie potrafie tego zebrac w kupę i potrzebuję drobnej podpowiedzi.

Pozdrawiam



  1. <?php
  2.  
  3. for($i = 0; $i <3; $i++)
  4. {
  5. $kwartał[$i] = array(1 => 'Styczeń', 'Luty', 'Marzec');
  6. echo "<br>";
  7. //print_r($kwartał[$i]);
  8.  
  9. $amba = array_fill(0, 3, $kwartał[$i]);
  10.  
  11.  
  12.  
  13. }
  14. print_r($amba);
  15.  
  16. ?>

problem rozwiązany
udalo mi się osiągnąć zamierzony efekt takim oto kodem : )
SmokAnalog
Eee, przecież ten kod robi coś zupełnie innego. W międzyczasie napisałem Ci coś, co robi to o co prosiłeś w pierwszym poście, zrobisz z tym co zechcesz:
  1. $result = array();
  2. if (($file = fopen ('numer.csv', 'r')) !== FALSE) {
  3. for($row = 1; $data = fgetcsv($file, 0, ','); $row++) !== FALSE) {
  4. list($nr, $sender, $message) = $data;
  5. $result[] = array(
  6. 'recipient' => '48'.$recipient,
  7. 'msgText' => $message,
  8. 'sender' => $sender,
  9. 'type' => 1,
  10. 'delivTime' => 0
  11. );
  12. }
  13. fclose($file);
  14. }

W zmiennej $result będziesz miał upragnioną tablicę.
rocktech.pl
Witam.

Po co się męczyć, spróbuj tak.

  1. $file = new SplFileObject ( "numer.csv" );
  2. $file->setFlags ( SplFileObject::READ_CSV );
  3. foreach ( $file as $row ) {
  4. print_r ( $row );
  5. list($num1, $sender, $mess) = $row;
  6. }
Lolek13
Cytat(SmokAnalog @ 11.07.2012, 14:59:00 ) *
Eee, przecież ten kod robi coś zupełnie innego. W międzyczasie napisałem Ci coś, co robi to o co prosiłeś w pierwszym poście, zrobisz z tym co zechcesz:
  1. $result = array();
  2. if (($file = fopen ('numer.csv', 'r')) !== FALSE) {
  3. for($row = 1; $data = fgetcsv($file, 0, ','); $row++) !== FALSE) {
  4. list($nr, $sender, $message) = $data;
  5. $result[] = array(
  6. 'recipient' => '48'.$recipient,
  7. 'msgText' => $message,
  8. 'sender' => $sender,
  9. 'type' => 1,
  10. 'delivTime' => 0
  11. );
  12. }
  13. fclose($file);
  14. }

W zmiennej $result będziesz miał upragnioną tablicę.


tamten kod dawal wynik, ktory bylem w stanie juz obrobic : P ale dzieki Twoj pomysl jest o wiele lepszy : ) na pewno sie przyda
SmokAnalog
Spoko. W linii 6. popraw sobie $recipient na $nr - moje niedopatrzenie w nazwach zmiennych.
Lolek13
Przed chwilą to zauwazyłem : )

Jeszcze raz serdeczne dzieki za pomoc : )
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.