Danieu! 0 Denunciar post Postado Novembro 9, 2013 A um bom tempo venho com essa dúvida que está martelando minha cabeça. Sim, eu sei como comparar duas Strings: <?php $arquivo1 = '1,2,3,4'; $arquivo2 = '1,2,3,4,5'; if ($arquivo1 != $arquivo2) { echo 'Os arquivos são diferentes.'; } ?> Ok, tudo certinho. Será printado a mensagem porque ambas as Strings são diferentes. Mas, e seu estivesse lidando com arquivos muito grandes, em que as informações são embaralhadas, e eu precisasse saber qual a real diferença entre eles? Nesse exemplo acima, impossível. Como que nesse exemplo, eu faria o SCRIPT printar que a diferença das duas Strings é o número 5? Compartilhar este post Link para o post Compartilhar em outros sites
Juninho De Luca_54619 0 Denunciar post Postado Novembro 9, 2013 Existem muitas formas de fazer isso, mas nenhuma delas é mágica e funciona para tudo. A maneira que poderia atender melhor a sua necessidade acho que seria converter ambas as strings em arrays (talvez transformar as palavras em substrings e depois transformá-los em arrays) e usar um array_diff para pegar a diferença Compartilhar este post Link para o post Compartilhar em outros sites
Danieu! 0 Denunciar post Postado Novembro 9, 2013 Não me conformo em não ter uma solução simples pra isso. Hoje foquei a tarde nisso, deu uns lag no cérebro... mas saiu uma gambiarra (horrível): <?php $arquivo1 = array('1', '2', '3', 'Daniel', 'SP', '4', '5'); $arquivo2 = array('1', '5', 'Fernando', 'SP', '4', '5', '6', 'RJ' ,'GTA'); $verdiferenca = (str_replace($arquivo1, "", $arquivo2)); $valorCONTAR = 10; $valorCONTAR = $verdiferenca; $valorCONTAR = count($verdiferenca); if($valorCONTAR !=0) { echo "O que tem de diferente nos Arquivos: <br>"; } while($valorCONTAR != 0) { $valorCONTAR = $valorCONTAR -1; $diferencas = $verdiferenca[$valorCONTAR]." "; //A mágica echo $diferencas; } ?> É possível aprimorar essa loucura que funciona que fiz? rsrsrsrs Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Novembro 10, 2013 Se fores numero se queres saber se até mesmo o tipo e igual usase <?php $a = 1; $b = "1"; echo ($a === $b) ? 'Igual' : 'Diferente' ; ?> Se fores 2 array tudo começa pela quantidade de dados ex: <?php $array1 = array(1,2,3,4,5,6,7,8,9); $array2 = array(1,2,3,4,"5",6,7,"8",9); $diferentes = 0; if(is_array($array1) AND is_array($array2)): if( sizeof($array1) AND sizeof($array2) ): for($i=0; $i < sizeof($array1); $i++){ if($array1[$i] === $array2[$i]){ $diferentes +=1; } } // Fim for echo "Encontrados ".$diferentes." registros diferente(s)."; else: echo "A quantidade de dados do array são diferentes."; endif; else: echo "Não são arrays"; endif; ?> Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Novembro 10, 2013 a função pode preg_match() faz isso.. retornar as diferenças de uma comparação. Compartilhar este post Link para o post Compartilhar em outros sites
Diogo Libana 10 Denunciar post Postado Novembro 10, 2013 Fiz uma versão que permite indicar quais são os valores diferentes em cada string, entendi que essa seria a informação que você quer, certo? Saber em que cada uma delas é diferente. Segue: <? $string1 = "minha string vai ter dados numéricos como um 9 um 8 e um domínio www.suco.com.br. :)"; $string2 = "minha string 2 vai ser diferente com dados numéricos como um 5 um 8 e um domínio www.batata.com.br. :)"; // explodindo as variaveis :) $arr1 = explode(" ", $string1); $arr2 = explode(" ", $string2); $dife1 = $arr1; $dife2 = $arr2; for ($i1 = 0; $i1 <= sizeof($arr1); $i1++) { for ($i2 = 0; $i2 <= sizeof($arr2); $i2++) { if($arr1[$i1] == $arr2[$i2]){ unset($dife1[$i1]); unset($dife2[$i2]); } } } echo "String1 = " . $string1 . " <br />"; echo "String2 = " . $string2 . " <br /><br />"; echo "A string 1 possui: <b>| " . implode(" ", $dife1) . "</b> | que a 2 não tem. <br />"; echo "A string 2 possui: <b>| " . implode(" ", $dife2) . "</b> | que a 1 não tem. <br />"; ?> O resultado me é entregue assim: String1 = minha string vai ter dados numéricos como um 9 um 8 e um domínio www.suco.com.br. :) String2 = minha string 2 vai ser diferente com dados numéricos como um 5 um 8 e um domínio www.batata.com.br. :) A string 1 possui: | ter 9 www.suco.com.br. | que a 2 não tem. A string 2 possui: | 2 ser diferente com 5 www.batata.com.br. | que a 1 não tem. A maior parte desse código ai é "estética". kkk Mas funfa perfeitinho.Concordo com o Juninho que disse haver diversas formas de fazer isso, tudo depende de "para quê" você quer isso. ;) Compartilhar este post Link para o post Compartilhar em outros sites
Danieu! 0 Denunciar post Postado Novembro 10, 2013 \o/ Diego e Paulinho muito obrigado. Olha o código de vocês, e olha o meu rsrsrsrs Até a próxima. :D Compartilhar este post Link para o post Compartilhar em outros sites