Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [PHP] estrarre dati da due Array

    Ciao a tutti. Dopo due giorni di testate sulla scrivania...
    Ho due file di testo:
    Il primo contiene data, codice e quantità. Il secondo solo codice.
    Devo ottenere di confrontarli per sapaere se i codici del secondo sono contenuti nel primo e nel caso ottenere le quantità.
    Al momento riesco ad ottenere che mi dica quali sono in comune mediante array_intersect ma non so come andare a vanti.. ogni cosa che provo è un flop.. qualche idea??

    grazie.
    ...ma ci sei o ci fai?!

  2. #2
    fai un foreach del primo array e per ogni valore utilizzi la funzione in_array http://php.net/manual/en/function.in-array.php

  3. #3
    Codice PHP:
    foreach($nuovo as $valore){ if(in_array($result,$nuovo)){ echo"data: ".$nuovo[0]." codice: ".$nuovo[1]." quantita: ".$nuovo[2]."
    "
    ; }  } 
    Considerando che $nuovo è l'array contenente data codice quantità e $result è un array contenente i codici?

    O non ho capito o credo che non funzionerà poichè in_array non accetta come primo parametro un'array. Comunque, intanto ringrazio per la risposta e provo...

    Saluti
    Enrico
    ...ma ci sei o ci fai?!

  4. #4
    confontando il codice con l'array non trova corrispondenza poichè lui legge data codice e quantità come un unico valore quindi diverso dal codice che gli passo io che in relatà è solo parte della stringa..
    ...ma ci sei o ci fai?!

  5. #5
    Dipende tutto da come sono fatti gli array, postali.

  6. #6
    Originariamente inviato da eraeruederauno
    O non ho capito o credo che non funzionerà poichè in_array non accetta come primo parametro un'array. Comunque, intanto ringrazio per la risposta e provo...
    Tu devi cercare il valore dentro al secondo array, quindi più o meno così:
    Codice PHP:
    foreach($nuovo as $valore){ if(in_array($valore,$result)){ echo "..."; }  } 
    Comunque dipende, come dice k.b, da come sono fatti i tuoi array...

  7. #7
    vi posto tutta la pagina

    Codice PHP:
    <?php //apro il primo file di testo composto da data codici quantità divido i dati e creo un array con i codici if (!$v_file = fopen("../public/ordiniPlenty/TERM002.doc","r")) { echo "Spiacente, non posso aprire i files."; } else { while(!feof($v_file)) { $vecchio = fgets($v_file, 9999); $vecchio = str_replace("      "," ",$vecchio); $vecchio=explode(" ",$vecchio); $codVecchi[]=$vecchio[1];  } } //eseguo lo stesso sul secondo file if (!$n_file = fopen("../public/ordiniPlenty/TERM001.doc","r")) { echo "Spiacente, non posso aprire i files."; } else { while(!feof($n_file)) { $nuovo = fgets($n_file, 9999); $nuovo1 = str_replace("      "," ",$nuovo); $nuovo1=explode(" ",$nuovo1); $codNuovi[]=$nuovo1[1]; } }  //svuoto il file di testo finale riscrivendolo con uno vuoto copy("prodotti_da_togliere.txt","../public/ordiniPlenty/prodotti_da_togliere.txt") or DIE ("impossibile copiare il file"); $var=@fopen("../public/ordiniPlenty/prodotti_da_togliere.txt","a+");//apro il file .txt (modalitÃ_ lettura/scrittura) //confronto gli array con i codici dei due file di testo per trovare quelli in comune $result = array_intersect($codVecchi, $codNuovi); $collidoppi=count($result);//conto i codici in comune $colli=count($codNuovi);//conto i codici del nuovo file di testo per contare gli articoli echo "CODICI GI&Aacute; PRESENTI NEL VECCHIO ORDINE 
    "; echo "TOTALE COLLI ORDINATI$colli
    "; echo "TOTALE COLLI RI-ORDINATI$collidoppi
    "; //stampo a video l'array contenente i codici comuni ai due file foreach($result as $value){ echo "$value
    "; @fwrite($var,$value."
    \n");//li scrivo sul mio file di testo } fclose($n_file);//chiudo il secondo file di testo //riapro il secondo file di testo if (!$a_file = fopen("../public/ordiniPlenty/TERM002.doc","r")) { echo "Spiacentenon posso aprire i files."; } else { while(!feof($a_file)) { $ordine = fgets($a_file, 9999); $ordine = str_replace("      "," ",$ordine); $ordine=explode(" ",$ordine); $ordine1[]=$ordine;//in questo array si memorizza tutto il file di testo composto da data codice quantità }  }  //provo ad ottenere che per i codici comuni mi stampi le righe ottenute dal secondo file di testo con relative quantità... ma NON FUNZIONA.. foreach($ordine1 as $valore){ if(in_array($valore,$result)){ echo"trovato $valore 
    "; } else{ echo "non trovato $valore  
    "; } }   fclose($v_file);//chiudo il primo file di testo fclose($a_file);//chiudo ll secondo file di testo @fclose($var);//chiudo il file .txt sul quale ho scritto i codici comuni copy("../public/ordiniPlenty/prodotti_da_togliere.txt","../public/ordiniPlenty/prodotti_da_togliere.doc") or DIE ("impossibile copiare il file");//e lo copio per renderlo scaricabile  echo "<a href=\"../public/ordiniPlenty/prodotti_da_togliere.doc\">SALVA</a>";//per scaricare... ?>
    i file di testo di cui parliamo sono così composti, riga d'esempio:

    10-05-2010 3015458 003
    10-05-2010 30055864 001

    Grazie per l'aiuto.
    Saluti
    Enrico
    ...ma ci sei o ci fai?!

  8. #8

    SCUSATE

    Vi chiedo scusa ma non ho capito come formattare il codice di modo che non comparisse tutto su una riga. Se me lo spiegate riposto per chiarezza.
    Ancora Scusa.
    ...ma ci sei o ci fai?!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.