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

    [PHP]Trovare parole uguali in un file

    Ciao,
    ho un file con tanti numeri separati da un "-" e vorrei trovare tutti i numeri uguali ed eliminarli automaticamente tramite php
    e.g.
    codice:
    123-543-765-123
    In questo caso si dovrebbe eliminare un "123" poichè ce ne sono due..

    Faccio un esempio di come sto strutturando il codice, ma vorrei delle delucidazioni su che funzione usare..
    Codice PHP:
    $filename 'file.txt';  //file da esaminare
    $handle fopen($filename,"a+");  //apro il file
    $contents fread($handlefilesize($filename));  //leggo il file
    $array_numeri = (array_map('trim'explode('-'$contents)));  //separo i numeri in tanti array quanti sono i numeri
    $numeri_totali count($array_numeri); //conto i numeri

    for($x=0$x<$numeri_totali$x++){
    if (
    $array_numeri[$x] == /*non so cosa mettere*/ ){
    ...
    }

    So che forse sto sbagliando qualcosa :S
    Grazie per l'aiuto..

    Forse potrei usare substr_count() ma non sono molto pratico a maneggiare array

  2. #2
    Puoi usare http://www.php.net/array_count_values per ottenere un array con i relativi conteggi, poi usi http://www.php.net/array_filter per eliminare gli elementi con un conteggio pari ad 1, infine esegui il ciclo e NON inserisci nell'array definitivo tutti gli elementi di $array_numeri contenuti nell'array dei conteggi.

  3. #3
    :S

    si ho capito.. ma il ciclo finale come lo imposto?

    Codice PHP:
    $filename 'file.txt';  //file da esaminare
    $handle fopen($filename,"a+");  //apro il file
    $contents fread($handlefilesize($filename));  //leggo il file
    $array_numeri = (array_map('trim'explode('-'$contents)));  //separo i numeri in tanti array quanti sono i numeri
    $numeri_totali array_count_values($array_numeri); //mi dice quanti ce ne sono uguali di ogni numero
    $filtra array_filter($numeri_totali,'maggiore_1'); //filtro i numeri di cui ce ne è più di uno uguale

    function maggiore_1($var
    {
        return(
    $var>1);
    }

    for(
    $x=1$x<$filtra$x++){
    ????...


    Non ci capisco niente
    Grazie

  4. #4
    Bha.. ho risolto tutto con array_unique (http://it.php.net/array%20unique)
    Il tuo metodo era troppo complesso e inutile, grazie lo stesso, Ciao

  5. #5
    Originariamente inviato da Walter94
    Il tuo metodo era troppo complesso e inutile
    Il metodo suggerito faceva quello che hai chiesto. La tua descrizione iniziale del problema NON faceva apparire array_unique() come un'alternativa valida.

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.