Brunck 0 Denunciar post Postado Janeiro 6, 2016 Olá galera, estou com duas listas de e-mails, no caso a primeira lista podem ter dados que também tem na segunda lista. Como posso verificar e salvar os dados que não tem na primeira e tem na segunda? Obrigado desde já :) Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 6, 2016 Há inúmeras formas de fazer isso. A mais simples é colocar as duas listas em arrays e usar array_diff(). Também é possível criar uma terceira lista e ir preenchendo-a conforme vai lendo as duas outras listas. Antes de inserir um novo registro na nova lista, verifique se ele já existe. A primeira forma é rápida e simples, mas exige bastante memória, se as listas foram muito grandes. A segunda dá mais trabalho, mas exige o mínimo de memória Compartilhar este post Link para o post Compartilhar em outros sites
Brunck 0 Denunciar post Postado Janeiro 6, 2016 Olá Beraldo, obrigado pela ajuda, você possui algum exemplo usando array_diff e salvando a diferença entre eles? Creio que esse método é o mais eficiente, pois faz tudo na memória. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Brunck 0 Denunciar post Postado Janeiro 6, 2016 $fp1 = @fopen('lista1.txt', 'r'); if ($fp1) { $array1 = explode("\n", fread($fp1, filesize('lista1.txt'))); } $fp2 = @fopen('lista2.txt', 'r'); if ($fp2) { $array2 = explode("\n", fread($fp2, filesize('lista2.txt'))); } $resultado = array_diff($array1, $array2); $i=0; while ($resultado){ $fp = fopen("diferenca.txt", "a+"); $escreve = fwrite($fp, $resultado[$i]."\n"); fclose($fp); $i++; } Compartilhar este post Link para o post Compartilhar em outros sites
Brunck 0 Denunciar post Postado Janeiro 6, 2016 Acredito que com esse código acima, consegui, porém não sei quando parar no while... Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 6, 2016 A função file() lê um arquivo direto para um array A ideia é criar dois arrays, cada um com o conteúdo de um dos arquivos O terceiro array é o retorno de array_diff Compartilhar este post Link para o post Compartilhar em outros sites
Brunck 0 Denunciar post Postado Janeiro 6, 2016 Eu sei disso Beraldo, eu fiz o código e está funcionando, mas como faço para parar o while? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 6, 2016 É só fazer $i ir de 0 até o tamanho do array. Use count() para contar o total de elementos Você pode usar um loop foreach também. Assim nem precisará de contador Compartilhar este post Link para o post Compartilhar em outros sites
Brunck 0 Denunciar post Postado Janeiro 6, 2016 Como faço para saber o tamanho do array? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 6, 2016 Foi o que falei. Use count() Compartilhar este post Link para o post Compartilhar em outros sites