Ir para conteúdo

POWERED BY:

Arquivado

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

rcdesign

[Resolvido] comparar duas arrays e trazer a diferença

Recommended Posts

O caso é o seguinte..

 

Tenho duas tabelas: admin e cadastro

 

Preciso fazer com que, no momento do cadastro, seja incluída a informação do funcionário (listado no admin) que irá atendê-lo.

 

Este funcionário deverá ser diferente a cada cadastro e em ordem sequencial.

 

Fiz então o seguinte:

$busca = mysql_query("SELECT contato_de FROM cadastro ORDER BY cod DESC LIMIT 0,2");
while ($result = mysql_fetch_array($busca)) {
   $contato_de = $result['contato_de'];
   $ult_func[] = $contato_de;					   // pega os doís últimos funcionários no campo contato_de e coloca numa array
}
echo '<br />Últimos 2 funcionários: ';
print_r($ult_func);								   // apenas para verificar se está trazendo os dois últimos corretamente e está.

$bsc = mysql_query("SELECT * FROM admin WHERE nivel_acesso = 1");  
while ($n = mysql_fetch_array($bsc)) { 
   $nome = $n['nome'];
   $nomes_func[] = $nome;			   // pega os funcionários do admin que tem nível de acesso = 1
}
echo '<br />Funcionários: ';
print_r($nomes_func);					// apenas para verificar se está trazendo todos os funcionários corretamente e está.

$func_atual = array_diff($ult_func, $nomes_func);   // faz a diferença entre as arrays 

echo '<br />Funcionário Atual: ';
print_r($func_atual);					  // informa o funcionário da vez

o que está retornando então é o seguinte:

 

Últimos 2 funcionários: Array ( [0] => Paulo [1] => kelly )

Funcionários: Array ( [0] => Kelly [1] => Paulo [2] => Daniel )

Funcionário Atual: Array ( [1] => kelly )

ou seja... o funcionário atual deveria ser Daniel, e não kelly..

 

Obs.: Estou verificando os dois últimos funcionarios cadastros pois, como se pode ver eu só tenho 3 funcionários para atender os clientes.. então, eu preciso ver apenas os últimos dois e incluir o terceiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renato obrigado pelo retorno porém, como se pode observar no meu post, já estou utilizando a função array_diff e não está retornando o valor correto.

 

Não entendi o porquê do array_fill se as arrays estão sendo populadas com os resultados das querys

Compartilhar este post


Link para o post
Compartilhar em outros sites

CONCLUSÃO

 

Não tem nada de errado no código.. está tudo certo.. o problema na verdade eram as informações que estavam cadastradas no banco de dados para o funcionário Kelly.

 

No admin estava "Kelly" e no cadastro "kelly" (K minúsculo).

 

ajustado o cadastramento correto através dos nomes dos funcionários vindos do admin resolve-se o 'problema' além do ajuste da linha

 

$func_atual = array_diff($ult_func, $nomes_func);   // faz a diferença entre as arrays

para:

$func_atual = array_diff($nomes_func, $ult_func);   // faz a diferença entre as arrays
A diferença sempre da array com maior quantidade de registros pela array com menor quantidade de registros. Não sei afirmar se isto é obrigatório, porque acabei não testando o contrário, mas pelo menos é o mais lógico.

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.