Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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á :)
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.
$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++;
}Acredito que com esse código acima, consegui, porém não sei quando parar no while...
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
Eu sei disso Beraldo, eu fiz o código e está funcionando, mas como faço para parar o while?
Obrigado.
É 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
Como faço para saber o tamanho do array?
Foi o que falei. Use count()
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