Visualizzazione risultati 1 fino 9 di 9

Discussione: Acquisire matrice da file

  1. #1
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,766

    Predefinito Acquisire matrice da file

    Salve.

    Dovrei mettere dentro una matrice il contenuto di un file. (ogni elemento è numerico).

    Ho fatto questo codice:

    Codice PHP:
    <?php

    /*inizializzo matrice*/
    for($y=0;$y<10;$y++)
    for(
    $x=0;$x<10;$x++)
    $matrice[$x][$y] = $x;

    /*scrivo matrice su file*/
    $f = fopen("prova.txt", "w");
    for(
    $y=0;$y<10;$y++)
    {
    for(
    $x=0;$x<10;$x++)
    fwrite($f, $matrice[$x][$y]);
    fwrite($f,"\n");
    }
    fclose($f);

    /*leggo file e assegno alla nuova matrice*/
    $f = fopen("prova.txt", "r");
    $n=0;
    for(
    $y=0;$y<10;$y++)
    for(
    $x=0;$x<10;$x++)
    {
    $nuova[$x][$y] = fread($f,1);
    fseek($f, ++$n , "SEEK_SET");
    }
    fclose($f);

    /*visualizzo matrice*/
    for($y=0;$y<10;$y++)
    {
    for(
    $x=0;$x<10;$x++)
    echo
    $nuova[$x][$y];
    echo
    "<br>";
    }
    ?>
    Il file viene creato con successo, ma poi la lettura non funziona.

    Provate a vedere:

    Questo è l'index.php e, se necessario, questo è il file prova.txt.

    C'é un metodo più efficace (almeno, che funzioni ) per acquisire la matrice?
    Grazie,

    CIAO!

  2. #2
    Guest

    Predefinito

    Dicci almeno come vuoi che venga popolata la matrice in questione rispetto a quel txt.


    ciao!!

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,766

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    Dicci almeno come vuoi che venga popolata la matrice in questione rispetto a quel txt.


    ciao!!
    Non ho capito la domanda:

    La scrittura del file va bene, ma poi dovrebbe stamparmi a video il contenuto del file (per verificare la matrice):

    0123456789
    0123456789
    0123456789
    0123456789
    0123456789
    0123456789
    0123456789
    0123456789
    0123456789
    0123456789

    Grazie,

    CIAO!

  4. #4
    Guest

    Predefinito

    Tu hai detto che vuoi inserire i dati del txt dentro una matrice... ma in quale forma?
    Un elemento per ogni riga?
    Un elemento per ogni carattere?
    Ogni riga è un elemento che a sua volta è una matrice contenente i caratteri di quella riga?


    Ciao!

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,766

    Predefinito

    ogni carattere è un elemento.
    matrice[0][0] = 0;
    matrice[1][0] = 1;
    ...
    matrice[9][9] = 9;

    Grazie,

    CIAO!

  6. #6
    Guest

    Predefinito

    E per le righe?
    Io vedo un array bidimensionale... forse uno dei due corrisponde alle righe?
    Altrimenti non si spiegherebbe il motivo per il quale invece che matrice[9][0] diventa [9][9]


    ciao!

  7. #7
    L'avatar di seneca
    seneca non è connesso Super Moderatore
    Data registrazione
    18-12-2004
    Residenza
    la Città Eterna
    Messaggi
    8,376

    Predefinito

    Hai fatto dei piccoli errori, cambia così:
    Codice PHP:
    <?php

    /*inizializzo matrice*/
    for($y=0;$y<10;$y++) {
    for(
    $x=0;$x<10;$x++)
    $matrice[$x][$y] = $x;
    }

    /*scrivo matrice su file*/
    $f = fopen("prova.txt", "w");
    for(
    $y=0;$y<10;$y++) {
    for(
    $x=0;$x<10;$x++)
    fwrite($f, $matrice[$x][$y]);
    fwrite($f,"\n");
    }
    fclose($f);

    /*leggo file e assegno alla nuova matrice*/
    $f = fopen("prova.txt", "r");
    $n=0;
    for(
    $y=0;$y<10;$y++) {
    for(
    $x=0;$x<10;$x++)
    $nuova[$x][$y] = fread($f,1);
    fseek($f, 1 , SEEK_CUR);
    }
    fclose($f);

    /*visualizzo matrice*/
    for($y=0;$y<10;$y++) {
    for(
    $x=0;$x<10;$x++)
    echo
    $nuova[$x][$y];
    echo
    "<br>";
    }
    ?>
    Principalmente sbagli concettualmente l'uso della fseek. Devi avanzare di uno dopo aver letto il 9, per saltare lo \n
    Ultima modifica di seneca : 25-02-2009 alle ore 18.20.06


    -- Aut Roma Aut Nihil!

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,766

    Predefinito

    Sì (mi sono confuso): un array bidimensionale

    Grazie,

    CIAO!

    Edit: Grazie, Seneca!.

    Anche io avevo provato con il seek_cur, ma non mi funzionava (avevo sbagliato qualcosa: è la prima volta che uso fseek in php!).

    Grazie,

    CIAO!
    Ultima modifica di alemoppo : 25-02-2009 alle ore 18.21.46

  9. #9
    L'avatar di matt93
    matt93 non è connesso Utente
    Data registrazione
    01-09-2008
    Messaggi
    241

    Predefinito

    io cambierei la struttura di salvataggio della matrice, se il file non lo deve vedere nessuno usa un serialize()

    comunque per leggere la tua matrice:

    Codice PHP:
    $file="file.txt";
    $matrice=array();
    foreach(
    file($file) as $id=>$value){
    $matrice[$id]=array();
    for(
    $i=0;$i<strlen($value);$i++){
    $matrice[$id][$i]=$value{$i};
    }
    }
    non lo ho provato ma dovrebbe andare

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •