Visualizzazione dei risultati da 1 a 5 su 5

Discussione: confronto file

  1. #1

    confronto file

    cerco di essere conciso per esporre il problema

    avendo due file a.txt e b.txt

    il primo contiene righe nella forma :

    pippo;prova:11766:vC23:S13.0E:27500:512:650:576:0:3401:318:5200:0
    il secondo contiene righe nella forma :

    4402:161:84=pol,85=eng:1002:161:0
    ho scritto questo codice ma due foreach insieme già mi suonano molto strano.. comunque:

    codice:
    $cona=file(a.txt);
    $conb=file("b.txt");
    foreach($cona as $line)
      {
      $tline = trim($line);
     $blocks=explode(":",$tline);
    
    foreach($conb as $dati)
      {
      $tdati = trim($dati);
       $blockdati=explode(":",$tdati);
       if ($blockdati[0] == $blocks[9]) {  
       $blocks[5] = $blockdati[1];
       $blocks[6] = $blockdati[2];
       $blocks[7] = $blockdati[5];
       }
      }
     
    $final = implode(":",$blocks);;
    confronto i dati in grassetto tra i due file

    quindi in questo modo confronto se il blocco 9 dell'array dalle linee del file a.txt è presente nel primo blocco dell'array dalle linee del file b.txt

    in caso affermativo modifico la linea del file a.txt e mi rischivo il tutto in un file...

    volevo sapere se era possibile un codice più snello per fare la medesima cosa? perchè non è raro che mi capiti un

    Fatal error: Maximum execution time of 30 seconds exceeded..

    Saluti
    In God We Trust

  2. #2
    Potresti descrivere a parole il confronto che vuoi fare ed il risultato che vuoi ottenere?

  3. #3
    Il confronto è tra un valore presente nelle line del file a.txt controllare se è resente nelle linee del file b in caso affermativo prelevare i valori da b ed inserirli nella relativa riga di a..

    Tutto qui
    In God We Trust

  4. #4
    Personalmente farei cosi:

    1. Leggo tutto il file B, ne effettuo il parsing e creo un array contenente tutti i valori che devo confrontare con il file A.
    2. Ordino l'array appena creato.
    3. Apro un nuovo file di destinazione (o un array/stringa, il risultato è il medesimo).
    4. Apro il file A, inizio a ciclare per ogni riga e cerco tramite in_array() (o in_sorted_array()) la presenza del valore della riga corrente.
    4a. Se il valore è presente, scrivo la nuova riga modificata
    4b. Se il valore non è presente, scrivo la vecchia riga

  5. #5
    in_array..

    che diamine.. me ne ero dimenticato... mica c'è un limite sulla dimensione di un array?

    in_array mi restituisce l'indice se trova corrispondenza?

    Saluti
    In God We Trust

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.