Bom dia Senhores,
Sou newbee aqui, e estou precisando de ajuda.
Segue o problema:
Tenho um array em php que recebe uma lista dados vindos do BD (Matricula e numero de registros do usuário).
com a Matrícula do usuário faço um busca de informações do usuário do Ldap (Ldap = campos texto(string)) e tenho como retorno Filial (cnpj e descrição) com isso completo todos os campos que preciso para gerar o relatório. (Do cnpj utilizo somente os 4 números que diferenciam uma filial de outra. Ex: xx.xxx.xxx/0000-xx, utilizo somente o 0000)
até aqui tudo bem, recebo a lista em um array e esta imprimindo na tela a lista abaixo:
7562,5060,5356,7182,5356,5421,7448,2623,7562,5356,7562,7448
Aqui esta meu meu problema, uma filial pode ter mais de um registro com usuários diferentes, como ocorre nos casos da 7562, 7448(…) que retornam do LDAP e estou apresentando meu relatório por filiais e preciso que a filial apareça somente uma vez, porem com o numero de vezes que ela esta sendo listada.
Estou usando for para varrer a lista e popular um a um, consigo eliminar duplicados utilizando a opção de armazenar o anterior, quando as filiais aparecem na sequencia, porem não consigo pegar todos os duplicados quando aparecem aleatoriamente, alguém sugere alguma outra forma:
//Aqui elimino os duplicados em sequencia
//A posição [0] é o cnpj
for ($i = 0; $i < count($arrayDados); $i++) {
if($arrayDados[$i][0] !== $cnpjAnterior) {
$cnpjAnterior = $arrayDados[$i][0];
$listaB[$i] = $arrayDados[$i];
}
}
//aqui tento eliminar os duplicados aleatórios
for ($i = 0; $i < count($listaB); $i++) {
$cnpjTemp.$totalIguais='';
for ($z = 0; $z < count($listaB); $z++) {
if($listaB[$i][0]==$listaB[$z][0]) {
$totalIguais++;
if($listaB[$i][0] !== $cnpjTemp) {
$cnpjTemp[$z]=$listaB[$i][0];
echo '<br>>lista Iguais: '.$listaB[$z][0];
}
}
}echo
'<br>total de iguais'.$totalIguais;
}
Consigo imprimir quantos duplicados tenho, mas não consigo imprimir a lista sem os duplicados.
Alguma LUZ?
Grato