Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Periscuelo

Comparar Campos de um Array

Recommended Posts

Pessoal estou com o seguinte problema:

 

Tenho uma determinada consulta que pode dar em x valores ex:

 

<?php $sql="SELECT * FROM tabela WHERE custo<> 0";$resultado = mysql_query($sql) or die("Erro ao ler tabela " . mysql_error());$array = mysql_fetch_array($resultado); ?>
Até aqui tudo bem vamos supor que tenha retornado 10 valores.

Existe um campo chamado pagamento em todos os valores, no qual

eu preciso saber se são iguais ou não, ou seja, dentre os 10 itens do $array como saber

se os 10 estão com valores identicos no campo pagamento ou se algum dos 10 tem um valor

diferente? Tem como fazer isto? Verificar se dentre os resultados do array todos possuem um campo

com resultados iguais? Estou precisando fazer este tipo de comparação. Será que alguém pode me dar

uma força?

 

Grato des de já pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal estou precisando muito disto será que alguém pode me dar uma luz?Mais uma vez grato pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já tentou usar a função array_unique() ?

Amigo Bravanet primeiramente muito obrigado pela atenção.array_unique() quando usei foi para fazer com que varios itens iguais virassem apenas um, ou seja, se tenho 10 resultadosiguais de um mesmo campo aparecendo eu faço com que apareça um só.Como preciso comparar um campo dentre os 10 itens do array para saber se são diferentes ou não, estou perdido na lógica.Não sei mesmo como fazer isto. Se vocês puderem me dar uma mão sobre como fazer isto eu ficarei imensamente grato pois realmente desta vez estou perdidinho.Grato mais uma vez pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais se de 10 viram apenas 1 significa que são todos iguais... se tivessem 9 com o valor do pagamento de 10,00 e um com 15,00 o ele ficaria 2.Desculpe amigo mais não estou conseguindo entender direito... qual a finalidade disso? Para eu ver se entendo para te ajudar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais se de 10 viram apenas 1 significa que são todos iguais... se tivessem 9 com o valor do pagamento de 10,00 e um com 15,00 o ele ficaria 2.Desculpe amigo mais não estou conseguindo entender direito... qual a finalidade disso? Para eu ver se entendo para te ajudar!

Hummm não sabia (na realidade não me atentei ao fato de) que array_unique() mostra 2 resultados de uma mesma consulta caso eles sejam diferentes.Com esta explicação que você me deu pode ser que eu já consiga ver a luz ao fim do tunel hehe.O que eu preciso saber é realmente se entre os 10 resultados que apareceram de um mesmo campo algum delesé diferente dos demais. Vou tentar fazer alguns testes com esta função agora então.Obrigado pelo esclarecimento amigo Bravanet.Qualquer duvida volto a postar. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo... veja este exemplo:

$arr = array(1,2,3,4,2,1,4,2,3,4,52,1,2);$arrr = array_unique($arr);echo "<pre>";print_r($arrr);echo "</pre>";
O resultado:

Array( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [10] => 52)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo... veja este exemplo:

$arr = array(1,2,3,4,2,1,4,2,3,4,52,1,2);$arrr = array_unique($arr);echo "<pre>";print_r($arrr);echo "</pre>";
O resultado:

Array( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [10] => 52)

Então amigo Bravanet este exemplo está perfeito. Agora vem a minha duvida.Qual if você faz para saber se dentre os 5 resultados de seu exemplo, todos são diferentes?Exemplo: if ($arrr>1) echo "Existe mais de um resultado no array";Como contabilizar isto? entendeu o que eu preciso? preciso saber se existem resultados diferentes ou nãomas não sei como fazer isto. Que if uso para saber se $arrr deu mais de um resultado ou apenas um só. Lembrandoque $arrr é um array_unique($arr).Ficarei imensamente grato se souber me tirar esta duvida.Grato mais uma vez pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar a função count(); se retornar 1 é pq não teve nada diferente, 2 é pq teve registro diferente... e assim por diante...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar a função count(); se retornar 1 é pq não teve nada diferente, 2 é pq teve registro diferente... e assim por diante...

Amigo Bravanet não está dando muito certo o array_unique().Acho que não estou sabendo fazer direito. Da uma olhada no código:
<?php if (isset($idfc)) {		foreach ($idfc as $result) {			$bdidexplode.= " or id = " . $result;		}	  }	  $comando = "SELECT * FROM $banco.$tabela WHERE id = '99999' $bdidexplode";	  $resultado = mysql_query($comando);	  if ($resultado) { 		  while($array = mysql_fetch_array($resultado)){		  $campoqueeuquero = array($array['campo especifico da tabela']);		  $teste2 = array_unique($campoqueeuquero);		  $teste3 = count(array_values($teste2)); 				}	  }
No código acima tentei fazer com que ele me mostrasse quantos resultados obteve mas sem sucesso.Esse é o problema. O fetch_array que eu faço pega vários campos do banco de dados porém eu quero saberquantos resultados tiveram apenas um dos campos que vem do banco de dados que é o $campoqueeuquero.E eu num to sabendo fazer isto. Esta tranqueira está dando erro. Ele até mostra os valores mas conta apenas umarray da forma que fiz acima. E preciso saber dos valores, se apareceram diferentes ou não. E não estou conseguindouma forma de contabilziar isto. Será que vocês tem idéia de como fazer isto com o banco de dados?Esta era minha idéia inicial e agora acho que consegui explicar bem.É possível fazer isto?Grato mais uma vez pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que alguém pode me dar um help com isto, pois realmente estou com este bendito problema a resolver e estou precisando muito desta solução. :( Mais uma vez grato pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi pessoal vou dar um UP no tópico na esperança de que alguém ainda consiga me ajudar com esta duvida, pois preciso realmente dar um geito de fazer isto se é que é possível fazer isto também né.Grato a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal achei a solução.

 

O Código correto tem de ser assim para fazer o que eu precisava.

 

<?php if (isset($meucampo)) {		foreach ($meucampo as $result) {			$bdmeucampoexplode.= " or meucampo = " . $result;		}	  }	  $comando = "SELECT DISTINCT meucampo FROM $banco.$tabela WHERE meucampo = '99999' $bdmeucampoexplode";	  $resultado = mysql_query($comando);	  $count = mysql_num_rows($resultado); 				  if ($count>1) { 					  echo "Tem resultados diferentes"; 				  } else { 					  echo "Todos os resultados são iguais"; 				  } ?>
Com o código acima ele pega a variável que vem submetida da outra página que é um array, faz um foreach para pegar todos os dados que vem da outra página e coloca tudo em uma query que vai dar os resultados de todos os campos que achar sendo igual ao submetido. Ou seja a query fica assim "SELECT DISTINCT meucampo FROM $banco.$tabela WHERE meucampo = '99999' or meucampo = 0 or meucampo=1". Sendo assim se tiver 20 resultados com o número 0 e 15 com o número 1, ele vai selecionar apenas uma vez o número 0 e apenas uma vez o número 1.

Sendo assim eu uso o mysql_num_rows() para saber quanto foi o resultado.

Eu precisava saber se todos os resultados eram iguais ou não lembram? vindo de uma query SQL do banco de dados?

Pois bem se $count for maior do que 1 eu já sei que ele encontrou resultados diferentes. Não foram todos 0 ou todos 1 ou todos 99999. Teve resultados aleatórios. Era isto que eu precisava saber.

Espero ter esclarecido qual era minha duvida e ter ajudado alguém que derepente venha a ter a mesma.

 

Grato a todos que tentaram me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.