Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313

    Contenuto di un file txt mi genera variabili vuote in array

    Salve a tutti sto avendo un problema con la generazione di un array e in particolare con la funzione explode.

    Ho un file di testo da analizzare, riesco a vedere i file senza problemi e il contenuto è strutturato nel seguente modo:

    TXT FILE
    |id|Codice|Descrizione|Listino_1|Listino_2|Listino _3|Listino_4|Listino_5|stato|
    |1|003|NOK105ITA|10,5|10,5|10,5|10,5|10,5|0|
    |2|003|NOK105ITA|10,5|10,5|10,5|10,5|10,5|0|
    |3|003|NOK105ITA|10,5|10,5|10,5|10,5|10,5|0|
    |4|003|NOK105ITA|10,5|10,5|10,5|10,5|10,5|0|

    per leggere il cotenuto file sto utlizzando la seguente funzione
    codice:
    $contenuto_file = file($path_File);
    $array_key ='';
                    foreach($contenuto_file as $row){
                    if($array_key ==''){
                            $array_key = @explode('|', $row);
                            print_r($array_key); 
                        }else{    
                            $array_content = @explode('|', $row);
                            $array = array_combine($array_key, $array_content); 
                            print_r($array);
                        }
    praticamente estraggo anche l'indice del file, poi ricompongo tutto in un array con indice e contenuto, il problema è il seguente che la prima è l'ultima voce escono vuote sia come indice che come contenuto.

    Inoltre questa funzione che stò scrivendo mi servirà per diversi file quindi e di conseguenza co numero di varibili diverse quindi dev'essere sempre funzionante.

    Stavo valutando l'ipotesi di usare un foreach per rimporre l'array ma il problema di fondo è che devo girare 10mila righe ogni volta che causerebbe un bel ritardo nel sistema....

    Di seguito vi riporto quello che esce dal print_r

    Array ( [] => [id] => 1 [Codice] => 001 [Descrizione] => NOK105ITA
    [Listino_1] => 10,5
    [Listino_2] => 10,5
    [Listino_3] => 10,5
    [Listino_4] => 10,5
    [Listino_5] => 10,5 [stato] => 0 [ ] => )


    ho evidenziato in rosso i due problemi che ho :-( potreste darmi un cosiglio su come eliminarli in maniera da non consumare troppe risorse ? GRAZIEEEEE
    Ultima modifica di sjpagan; 20-09-2014 a 19:18 Motivo: errore nella scrittura

  2. #2
    E' un comportamento normalissimo: la explode funziona proprio così.
    Se vuoi "parsare" quel formato di linea, allora ti tocca utilizzare un'espressione regolare.
    In alternativa puoi rimuovere il primo e l'ultimo '|', e ricondurti ad un formato di questo tipo:
    codice:
    id|Codice|Descrizione|Listino_1|Listino_2|Listino _3|Listino_4|Listino_5|stato
    1|003|NOK105ITA|10,5|10,5|10,5|10,5|10,5|0
    2|003|NOK105ITA|10,5|10,5|10,5|10,5|10,5|0
    3|003|NOK105ITA|10,5|10,5|10,5|10,5|10,5|0
    4|003|NOK105ITA|10,5|10,5|10,5|10,5|10,5|0
    http://php.net/manual/it/function.explode.php
    Experience is what you get when you don’t get what you want

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    oppure una volta definito l'array ci applichi array_shift e array_pop e lo ripulisci del primo e dell'ultimo elemento

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.