Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. [Risolto] Trasformare un file .txt in un array di array
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • M
      mentelibera User Attivo • ultima modifica di

      Esatto, mi piacerebbe ricavare i singoli elementi disponendoli ordinatamente, e magari anche le singole dimensioni degli array annidati, per esempio il 5.o del primo post (riporto per comodità, "4" => array("a","d","e")) dovrebbe riportare 3.

      Grazie.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • marcocarrieri
        marcocarrieri ModSenior • ultima modifica di

        Ok... un po di analisi...
        E vedo ok... 🙂 ?
        E se la dimensione fosse calcolata non a priori, ma mentre splitti andrebbe bene lo stesso?

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • M
          mentelibera User Attivo • ultima modifica di

          Sì, va benissimo anche il calcolo della dimensione in un momento successivo.

          Prenditi tutto il tempo di cui hai bisogno, anch'io sto facendo delle ricerche online...

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • M
            mentelibera User Attivo • ultima modifica di

            Non ho avuto modo di provare il codice qui sotto, ma mi è venuta in mente questa possibile soluzione almeno per trasferire i dati dal file all'array di array che consiste nel rimuovere la riga con il solo slash in fase di lettura.
            Ecco il prototipo:

            [php]
            // Legge il file e rimuove l'elemento inutile
            $contenuto_file = file_get_contents("elenco.txt");
            $contenuto_file = str_replace('/\n', '', $contenuto_file); // per file testuali Linux
            $contenuto_file = str_replace('/\r\n', '', $contenuto_file); // per file testuali Windows

            // Inserisce nell'array le righe del file e poi crea quelli annidati
            $array = explode('\n', $contenuto_file);
            $array = explode('/', $array);
            [/php]Per le altre operazioni non saprei come procedere. :gtsad:

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • marcocarrieri
              marcocarrieri ModSenior • ultima modifica di

              Una cosa cosi può andare bene come inizio?

              [php]
              <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
              <html xmlns="http://www.w3.org/1999/xhtml">
              <head>
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
              <title>Analisi testo</title>
              <style type="text/css">
              html,body
              {
              margin:0px;
              padding:0px;
              background:#AAD4FF;
              }
              </style>
              </head>
              <body>
              <?php
              $percorsoFile="testo.txt";
              $contenuto_file=file_get_contents($percorsoFile);
              $righe=split("\n",$contenuto_file);
              $numerorighe=count($righe);
              echo "Il file contiene $numerorighe righe.<br />";
              $numeroriga=0;
              foreach($righe as &$riga)
              {
              $numeroriga=$numeroriga+1;
              $elementi=explode("/",$riga);
              $numeroElementi=count($elementi)-1;
              echo "La riga numero $numeroriga contiene $numeroElementi elementi<br />";
              $numeroElemento=0;
              foreach($elementi as &$elementoriga)
              {
              $numeroElemento=$numeroElemento+1;
              if($numeroElemento>1)
              {
              echo "==>$elementoriga<==<br />";
              }
              }
              }
              ?>
              </body>
              </html>
              [/php]

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • M
                mentelibera User Attivo • ultima modifica di

                Mi sembra buono ma non ho capito una cosa, perché nei foreach(){ } metti come argomento un reference anziché il nome della variabile, in sostanza non dovrebbe essere, per esempio:

                foreach($righe as $riga){/.../}

                Grazie.

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • marcocarrieri
                  marcocarrieri ModSenior • ultima modifica di

                  Beh, nel php sono solo dilettante, però ho visto che la sintassi data sembra essere quella.

                  php.net/manual/en/control-structures.foreach.php

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • M
                    mentelibera User Attivo • ultima modifica di

                    Generalmente ad una variabile viene esplicitato il reference nel parametro formale della funzione quando questa ne cambierà il contenuto. In questo caso non c'era alcun problema 🙂

                    Stavo facendo una prova e mi sembra che ci sia un problema poiché prende in considerazione pure la riga con il solo slash che invece non dovrebbe prendere.

                    Ho messo temporaneamente sul mio sito l'effetto a questo riferimento che poi rimuoverò:
                    w w w.cervia.name/esperimento1.php
                    il file di testo è qui:
                    w w w.cervia.name/testo.txt

                    Grazie, ciao.

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • marcocarrieri
                      marcocarrieri ModSenior • ultima modifica di

                      Beh puoi sempre fare un trim dell'elemento e se quest'ultimo è uguale alla stringa vuota allora non stamparlo, non considerarlo.

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • M
                        mentelibera User Attivo • ultima modifica di

                        Giusta osservazione.
                        Visto che il problema è stato risolto mi accingo a:

                        1. sostituire i link del mio post precedente con "...omissis...";
                        2. mettere "Risolto" al titolo del primo post.

                        Grazie, :gthi:

                        <addendum>
                        Contrordine, mi accorgo solo ora che non è più possibile modificare i post precedenti nonostante la buona intenzione...
                        </addendum>

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • marcocarrieri
                          marcocarrieri ModSenior • ultima modifica di

                          E' lo si può fare entro 30 minuti...
                          Ora vedo se chi ha il potere lo può fare. 🙂

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          Caricamento altri post
                          Rispondi
                          • Topic risposta
                          Effettua l'accesso per rispondere
                          • Da Vecchi a Nuovi
                          • Da Nuovi a Vecchi
                          • Più Voti