• User Newbie

    Da file.txt ad array multidimensionale

    Salve a tutti sono nuovo del sito.
    Volevo chiedervi un'iuto perchè non riesco a prendere dei dati da un file e a dividerli.
    inizialmente l'array si trova in una pagina e ha questa forma:
    $shop = array( array(370, 0),
    array( 520, 0),
    array(990, 0),
    array(1633, 0)}
    poi salvo l'array in un file di testo chiamato shop.txt.
    A questo punto nel file di testo si forma la seguente stringa:
    370 0 , 520 0 , 990 0 , 1633 0 ,
    il mio problema è che non riesco più a tornare all'array di partenza(su un'altra pagina).
    Potete darmi una mano? grazie mille


  • User Newbie

    Scusate.
    Mi sono dimenticato di dire che le pagine sono scritte in php


  • Consiglio Direttivo

    Ciao azureangel127 e benvenuto nel Forum GT. 😉

    Potresti provare, invece che scrivere i valori uno di seguito all'altro, a dare un newline per ogni valore di array:
    370 0\n
    520 0\n
    990 0\n
    1633 0\n

    Quindi recuperi il contenuto con file() e ti elabori l'array ottenuto per tornare alla situazione di partenza. 😉


  • User

    @azureangel127 said:

    Inizialmente l'array ha questa forma:
    $shop = array( array(370, 0),array( 520, 0),array(990, 0),array(1633, 0)}

    Poi salvo l'array in un file di testo chiamato shop.txt.

    A questo punto nel file di testo si forma la seguente stringa:
    370 0 , 520 0 , 990 0 , 1633 0 ,
    il mio problema è che non riesco più a tornare all'array di partenza

    Ciao,

    se puoi intervenire sul codice php che crea il file shop.txt ti consiglio di salvare l'array utilizzando la funzione serialize (php.net/serialize) in questo modo nella seconda pagina puoi leggere il contenuto del file e, attraverso la funzione unserialize (php.net/unserialize), ottenere l'array originale.

    se non hai modo di intervenire sul codice che crea il file shop.txt prova questo codice:

    [PHP]

    // arrOuput conterrà l'array originale
    $arrOutput = array();

    // legge il file shop.txt
    $strContent = file_get_contents('shop.txt');
    // crea un array per ogni coppia di valori separato dalla virgola
    $arrContent = explode(",", $strContent);
    // rimuove gli spazi da ogni elemento dell'array
    $arrContent = array_map('trim', $arrContent);

    // cicla le linee del file
    foreach ($arrContent as $strLine) {
    // memorizza i valori separati da spazi in un array
    $arrParts = explode(' ', $strLine);
    /* rimuove gli spazi da ogni elemento e assegna il risultato ad un nuovo elemento di arrOuput */
    $arrOutput[] = array_map('trim', $arrParts);
    }

    // $arrOutput contiene l'array originale
    var_dump($arrOutput);

    [/PHP]

    Spero ti possa essere utile 🙂