CrazyLOL 2 Denunciar post Postado Outubro 16, 2013 Galera estou querendo verificar em um array se existe valores repetidos. Bem, montei um algoritmo que na minha visão deveria funcionar... mas não está funcionando... Ele fica mostrando que existe valores repetidos no meu array mesmo não tendo valores iguais. abaixo está meu codigo... $erro = ''; $cod_meses = array('1','2','4','5','1'); $ver = ''; $ver_count = 0; for($i = 0; $i < sizeof($cod_meses); $i++){ //verifico se a variavel 'ver' existe dentro do array se existe o ver_count recebe +1 if(!empty($ver) && (in_array($ver,$cod_meses))){ $ver_count++; } //variavel 'ver' recebe o codigo atual para verificar o proximo $ver = $cod_meses[$i]; } echo $ver_count; $erro .= $ver_count > 0 ? 'Existe meses repetidos, para ignorar mude o valor do mês para 0 (zero) <br>' : 'NÃO EXISTE MESES REPETIDOS'; echo $erro; Não sei bem, mas ele está entrando no meu bloco que faz a contagem de valores repetidos. que deveria apenas entrar se existisse realmente o valor no Array. Acredito que seja algo 'bobo' mas não estou dando conta.. :P Compartilhar este post Link para o post Compartilhar em outros sites
CrazyLOL 2 Denunciar post Postado Outubro 16, 2013 Consegui resolver o problema... rsss Estava colocando na variavel 'ver' o valor e após verificar dentro do array o valor que recebi anterior estava dentro do array ( logico ). a forma correta que fiz é após acrescentar o valor atual do cod_mes para variavel ver é remover esse valor atual dessa posição, assim não teria duplicidade na varredura desse array. Bom não sei se deu pra entender.. :P mas o algoritmo final ficou assim: $cod_meses = array('1','2','4','5','8'); $ver = ''; $ver_count = 0; $count = count($cod_meses); for($i = 0; $i < $count; $i++){ //verifico se a variavel 'ver' existe dentro do array se existe o ver_count recebe +1 if(!empty($ver)){ if(in_array($ver,$cod_meses)){ $ver_count++; } } //variavel 'ver' recebe o codigo atual para verificar o proximo $ver = $cod_meses[$i]; //removo esse valor na posição atual para assim não gerar duplicidade na verificacao unset($cod_meses[$i]); } $ver_count; $erro .= $ver_count > 0 ? 'Existe meses repetidos, para ignorar mude o valor do mês para 0 (zero) <br>' : 'NÃO EXISTE MESES REPETIDOS'; echo $erro; Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Outubro 16, 2013 há N meios para resolver.. Veja como fzer isso tudo que vc escreveu numa linha só: Nesse caso, retorna os duplicados se existirem, $rs = array_unique( array_diff_assoc( $cod_meses, array_unique( $cod_meses ) ) ); var_dump( $rs ); se o intuito for apenas checar se há algo duplicado, não importando o quê exatamente, $rs = count($cod_meses) !== count(array_unique($cod_meses)); var_dump( $rs ); Compartilhar este post Link para o post Compartilhar em outros sites
CrazyLOL 2 Denunciar post Postado Outubro 16, 2013 Putz... ótimo também!!! Mas agora quebrei tanto a cabeça que vou usar essa maneira que achei tbm.. mas obrigado Hinom! Compartilhar este post Link para o post Compartilhar em outros sites