copia di un array

« Older   Newer »
 
  Share  
.
  1.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Il punto è che non ti serve fatto in quel modo.
    Non ricordo moltissimo PHP, ma ciò che hai scritto non è corretto secondo me. Prima di tutto la matrice è vuota, ed in secondo luogo nome ed indirizzo sono sulla stessa riga.
    Tutto ciò che devi fare è questo:

    1) scorrere il file (cosa che stai facendo con il primo for);
    1.1) per ogni riga che leggi parsarla
    2) inserire i due valori della stringa all'interno dell'array

    Quindi dovrai avere una variabile che viene incrementata ogni volta che il ciclo di lettura termina.
    Una sorta di pseudo codifica è la seguente:

    CODICE
    $indice = 0;

    while (!feof($leggo)) {
     $linea_testo = file($leggo);

     $nome = // parsi $linea_testo per ottenere il nome
     $indirizzo = // ottieni l'indirizzo

     $matrice[$indice][0] = $nome;
     $matrice[$indice][1] = $indirizzo;
     
     $indice++;
    }
     
    Top
    .
  2. Samus89
     
    .

    User deleted


    Eccomi qui, ero sparita causa vacanze (se così vogliamo chiamarle....)
    Allora ho rimesso mano sul codice ma non riesco bene a capire come fare il parse prendendo quella specifica posizione, ho scritto:

    foreach($linea_testo as $key => $value) {
    $indice=0;
    $linea_testo = explode(",",$value);
    $nome = $linea_testo[$indice][1];
    $indirizzo = $linea_testo[$indice][2];

    $indice++;
     
    Top
    .
  3.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Non vedo la graffa di chiusura del codice, e se definisci index all'interno del for ad ogni ciclo viene azzerato...
    Il mio codice non funziona? Cosa non capisci di preciso?
     
    Top
    .
  4. Samus89
     
    .

    User deleted


    Non capisco la parte
    $nome = // parsi $linea_testo per ottenere il nome
    $indirizzo = // ottieni l'indirizzo
     
    Top
    .
  5.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Il parsing è quello che hai fatto con la funzione explode. Se ricordo bene restituisce un array con tutti gli elementi della stringa che riceve in input (separati da un token particolare). Però devi salvarli in una matrice a parte, come ti ho mostrato sopra, altrimenti ad ogni ciclo perdi il valore precedente. Stesso discorso per la variabile indice, deve essere dichiarata fuori dal for. Inoltre dato che devi scorrere un file ti conviene usare un while come nel mio esempio (o un for, ma l'importante è che scorri sino al termine del file). Poi non puoi utilizzarla in quel modo $linea_testo.

    Oppure fai così:

    CODICE
    $indice = 0;
    $handle = fopen("NomeFile.txt","r");

    if($handle) {
     while (($linea = fgets($handle)) != false) {
       $contenuto_linea = explode(',',$linea);
       
       $matrice[$indice][0] = $contenuto_linea[0]; // primo elemento della stringa, il Nome se non ricordo male
       $matrice[$indice][1] = $contenuto_linea[1]; // indirizzo
       $indice++;
     }
    } else {
     // Apertura file non riuscita
    }

    fclose($handle);


    In pratica il codice è questo, devi solo definire $matrice come una matrice.
     
    Top
    .
19 replies since 4/7/2014, 09:23   317 views
  Share  
.