Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 38

Discussione: Lite con array :-)

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    28

    Lite con array :-)

    Ciao a tutti, sto litigando con gli array: sto creando uno script che legga dei file csv e in automatico mettesse i dati letti in un array. Il problema è che questi file legati tra loro tramite un codice e, se fosse possibile, vorrei che creasse un unico array completo. Esempio:
    Ho un file chiamato articoli.txt, uno chiamato disponibilita.txt e uno prezzi.txt.
    articoli.txt:
    codice|codiceproduttore|descbreve|immagini
    54654|66655|prova prodotto|http://www.immagine.it/imm.jpg
    97376|32655|altra prova prodotto|http://www.immagine.it/imm23.jpg
    disponibilita.txt:
    codice|quantita
    54654|12
    97376|28
    prezzi.txt:
    codice|prezzo|sconto
    54654|129.98|2
    97376|28.54|0
    Ho fatto un primo script che leggeva i file uno alla volta e li inseriva in un DB, successivamente facevo una mega query con LEFT JOIN e univo tutto in un'altra tabella, funzionava ma il problema è la lentezza!!!
    Ora sto provando con gli array (anche perchè mi serve unire i singoli file per poi esportarli in un unico file TXT) ma mi sto perdendo...
    Questo è uno spezzone di codice:

    Codice PHP:
               $dir dirname(__FILE__)."/file/*.txt"
    $count 0
    foreach(
    glob($dir) as $file

       
    $fp fopen($file,'r'); 
       while ((
    $data[$count] = fgetcsv($fp,0,'|')) !== FALSE
       { 
          
    print_r($data); 
       } 
       
    $count++; 

    Ovviamente il file viene letto e messo nell'array $data, posso vedere i singoli file con $data[0], $data[1],etc...
    Come posso unirli in un unico array usando come chiave il codice???
    Grazie anticipatamente.

    Ignazio

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    il codice è univoco nei file? nel senso, ogni file ha una sola riga per il un determinato codice?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    28
    Quote Originariamente inviata da clasku Visualizza il messaggio
    il codice è univoco nei file? nel senso, ogni file ha una sola riga per il un determinato codice?
    Si, il codice è univoco in ogni file

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    allora prova a fare un array con tutti gli articoli (la chiave sarà il codice e gli altri campi staranno in un sottoarray)
    poi prendi gli altri file e per ogni riga cerchi l'array precedente usando il codice e metti gli altri campi nel sottoarray

    devi ottenere qualcosa tipo
    codice:
    codice A
        campo1 => preso da file articoli
        campo2 => preso da file articoli
        campo3 => preso da file disponibilità
        campo4 => preso da file prezzi
     codice B
        campo1 => preso da file articoli
        campo2 => preso da file articoli
        campo3 => preso da file disponibilità
        campo4 => preso da file prezzi

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    28
    Quote Originariamente inviata da clasku Visualizza il messaggio
    allora prova a fare un array con tutti gli articoli (la chiave sarà il codice e gli altri campi staranno in un sottoarray)
    poi prendi gli altri file e per ogni riga cerchi l'array precedente usando il codice e metti gli altri campi nel sottoarray

    devi ottenere qualcosa tipo
    codice:
    codice A
        campo1 => preso da file articoli
        campo2 => preso da file articoli
        campo3 => preso da file disponibilità
        campo4 => preso da file prezzi
     codice B
        campo1 => preso da file articoli
        campo2 => preso da file articoli
        campo3 => preso da file disponibilità
        campo4 => preso da file prezzi
    Ok, un aiuto con il codice? Riesci a darmi (magari partendo dal codice postato) una mano?

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    provalo, non l'ho testato
    Codice PHP:
    $dir dirname(__FILE__)."/file/*.txt"

    $out_array = array();
    foreach(
    glob($dir) as $file) {
        
    $fp fopen($file,'r'); 
        
    $count 1
           while ((
    $data fgetcsv($fp,0,'|')) !== FALSE) { 
               
    $out_array[$data[0]][] = $data[$count];
               
    $count++;
       } 


    }  
    print_r($out_array); 

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    28
    Quote Originariamente inviata da clasku Visualizza il messaggio
    provalo, non l'ho testato
    Codice PHP:
    $dir dirname(__FILE__)."/file/*.txt"

    $out_array = array();
    foreach(
    glob($dir) as $file) {
        
    $fp fopen($file,'r'); 
        
    $count 1
           while ((
    $data fgetcsv($fp,0,'|')) !== FALSE) { 
               
    $out_array[$data[0]][] = $data[$count];
               
    $count++;
       } 


    }  
    print_r($out_array); 
    Crea abbastanza casino. questo è un esempio:
    Array ( [Codice] => Array ( [0] => Quantita [1] => CodiceProduttore [2] => Img [3] => Dispo ) [SPKB07-BR] => Array ( [0] => 2014-10-20 00:00:00 ) [HDSB01-BK] => Array ( [0] => ) [PS-100] => Array ( [0] => ) [M730-BK] => Array ( [0] => ) [SPKB07-SR] => Array ( [0] => ) [LK7430] => Array ( [0] => ) [M727-GA] => Array ( [0] => ) [F3788-L250] => Array ( [0] => 4053026479219 [1] => http://www.fileimmagini.it/prodth/F3788L250.jpg [2] => [3] => ) [MC28H5015CS] => Array ( [0] => SAMSUNG SAMSUNG MICROONDE MC28H5015CS [1] => Samsung MC28H5015CS/EN. Larghezza: 51.7 cm, Profondità : 47.48 cm, Altezza: 31 cm

    Forse è meglio partire dal file che contiene più campi e, ogni volta che leggo un file (ad esempio prezzi.txt) quando trova il codice uguale aggiunge un campo all'array. Si può fare? Mi spiego meglio:

    File articoli:
    codice|codiceproduttore|descbreve|immagini
    54654|66655|prova prodotto|http://www.immagine.it/imm.jpg

    Il codice diventa la chiave:
    codice:
    54654
    0=>66655
            1=>prova prodotto
            2=>http://www.immagine.it/imm.jpg
    Ora leggo il file prezzi.txt
    codice|prezzo|sconto
    54654|129.98|2

    codice:
    54654
            0=>66655
            1=>prova prodotto
            2=>http://www.immagine.it/imm.jpg
            3=>129.98 //aggiunto ora
            4=>2  //aggiunto ora
    Ultima modifica di myfender; 30-08-2014 a 13:28

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    E' vero ho sbagliato una cosa...
    Modifica dopo il while in modo da scorrere $data e mettere i valori nell'array

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    28
    Crea abbastanza casino. questo è un esempio:
    Array ( [Codice] => Array ( [0] => Quantita [1] => CodiceProduttore [2] => Img [3] => Dispo ) [SPKB07-BR] => Array ( [0] => 2014-10-20 00:00:00 ) [HDSB01-BK] => Array ( [0] => ) [PS-100] => Array ( [0] => ) [M730-BK] => Array ( [0] => ) [SPKB07-SR] => Array ( [0] => ) [LK7430] => Array ( [0] => ) [M727-GA] => Array ( [0] => ) [F3788-L250] => Array ( [0] => 4053026479219 [1] => http://www.fileimmagini.it/prodth/F3788L250.jpg [2] => [3] => ) [MC28H5015CS] => Array ( [0] => SAMSUNG SAMSUNG MICROONDE MC28H5015CS [1] => Samsung MC28H5015CS/EN. Larghezza: 51.7 cm, Profondità : 47.48 cm, Altezza: 31 cm

    Forse è meglio partire dal file che contiene più campi e, ogni volta che leggo un file (ad esempio prezzi.txt) quando trova il codice uguale aggiunge un campo all'array. Si può fare? Mi spiego meglio:

    File articoli:
    codice|codiceproduttore|descbreve|immagini
    54654|66655|prova prodotto|http://www.immagine.it/imm.jpg

    Il codice diventa la chiave:
    codice:
         54654
            0=>66655
            1=>prova prodotto
            2=>http://www.immagine.it/imm.jpg
    Ora leggo il file prezzi.txt
    codice|prezzo|sconto
    54654|129.98|2

    codice:
         54654
            0=>66655
            1=>prova prodotto
            2=>http://www.immagine.it/imm.jpg
            3=>129.98 //aggiunto ora
            4=>2  //aggiunto ora
    Si può fare???

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    28
    Quote Originariamente inviata da clasku Visualizza il messaggio
    E' vero ho sbagliato una cosa...
    Modifica dopo il while in modo da scorrere $data e mettere i valori nell'array
    Cioè?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.