Ir para conteúdo

POWERED BY:

Arquivado

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

leo_SJCampos

Remover valores duplicados dentro de ARRAY

Recommended Posts

Galera, tenho uma dúvida, como que eu faço para remover itens deplicados dentro do mesmo array?

 

exemplo:

 

$carencia_dep = array("10","10","20");

 

eu preciso fazer isso de forma, dinâmica, para que ele não grave valores repetidos no banco..

 

alguem tem alguma ideia?

 

valeu galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

o manual é teu amigo:

http://www.php.net/manual/en/ref.array.php

 

 

array_unique — Removes duplicate values from an array

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu irmão.. mas nao deu certo... eu ja tinha tentado usar o array_unique mas não funcionou.. meu codigo esta assim:

 


$rel_dep = pg_query("select carencia, id_usuario from usuario 
		where cliente = '$cliente' and codclsj = '$codclsj'
		and parentesco != '00'");


while($row_dep=pg_fetch_object($rel_dep)) {

      $carencia_dep = $row_dep->carencia;

     $carencia_dep = str_split( $carencia_dep , 2 );
     $carencia_dep = array_unique($carencia_dep);	

}

 

só que quando eu volto para essa rotina novamente.. ele faz duplica o valor do array...

 

se o array estiver assim

$carencia_dep = array("10","20");

 

ele faz isso;

 

$carencia_dep = array("10","10","20");

Compartilhar este post


Link para o post
Compartilhar em outros sites

não faz sentido isso que você fez.

 

coloca o seguinte:

echo '<pre>';
var_dump( $row_dep->carencia );

$carencia_dep = str_split( $row_dep->carencia , 2 );
var_dump( $carencia_dep );

para entendermos qual é o conteudo desta variavel.

e oque você conseguiu depois do split.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou colocar o codigo inteiro entao pra ver se facilita...

 

//Recupera as carencias dos dependentes	
$rel_dep = pg_query("select carencia, id_usuario from usuario 
		where cliente = '$cliente' and codclsj = '$codclsj'
		and parentesco != '00'");
while($row_dep=pg_fetch_object($rel_dep)) {
$carencia_dep = $row_dep->carencia;	
$id_usuario_dep = $row_dep->id_usuario;


//Quebra as carencias do titular em pares
$carencia_tit = str_split( $carencia_tit , 2 );
$carencia_tit_old = str_split( $carencia_tit_old , 2 );
$carencia_dep = str_split( $carencia_dep , 2 );

//$carencia_dep = array_unique( $carencia_dep );
       $carencia_dep = array_unique($carencia_dep);

       //Pega a diferença entre a carencia do titular com a do dependente
$result = array_diff($carencia_tit_old, $carencia_tit);
$result1 = array_diff($carencia_dep, $result);

//Percorre o array da diferença e atribui a mesma nas carencias
foreach ($result1 as $v) {
	 array_push($carencia_tit, $v);
}

//coloca em uma variavel a carencia oficial
$carencia_oficial_dep = "";			
foreach($carencia_tit as $valor) {
	$carencia_oficial_dep .= $valor;
}	
																$stmt33 = pg_query("update usuario set 
			tplano = '$plano_novo',
			carencia = '$carencia_oficial_dep'
			where id_usuario = '$id_usuario_dep'");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o resultado dos var_dump()

Compartilhar este post


Link para o post
Compartilhar em outros sites

funcionou certinho o array_unique

<?php
$arr = Array(
0=>"15",
1=>"12",
2=>"12",
3=>"10" 
);
echo '<pre>';
var_dump( $arr );
var_dump( array_unique( $arr ) );

saida:

array(4) {
 [0]=>
 string(2) "15"
 [1]=>
 string(2) "12"
 [2]=>
 string(2) "12"
 [3]=>
 string(2) "10"
}
array(3) {
 [0]=>
 string(2) "15"
 [1]=>
 string(2) "12"
 [3]=>
 string(2) "10"
}

tente ser mais claro com as tuas variaveis, e não use o 'mesmo nome' tão repetidas vezes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora deu certo... obrigado.. só para fechar.. esse select tem um while para fazer isso com todos os registros.. só que ele só esta fazendo no primeiro.. no segundo o valor da carencia vem em branco. por que será? pode ser nesse topico mesmo ou é melhor eu criar outro?

 

 

$carencia_tit_old = array("20");
$carencia_tit = array("30");

$rel_dep = pg_query("select carencia, id_usuario from usuario 
		where cliente = '$cliente' and codclsj = '$codclsj'
		and parentesco != '00'");
while($row_dep=pg_fetch_object($rel_dep)) {
$carencia_dep = $row_dep->carencia;	
$id_usuario_dep = $row_dep->id_usuario;

//Quebra as carencias do titular em pares
$carencia_tit = str_split( $carencia_tit , 2 );
$carencia_tit_old = str_split( $carencia_tit_old , 2 );
       $carencia_dep = str_split( $row_dep->carencia , 2 );


//$carencia_dep = array_unique( $carencia_dep );

//Pega a diferença entre a carencia do titular com a do dependente
$result = array_diff($carencia_tit_old, $carencia_tit);
$result1 = array_diff($carencia_dep, $result);


$result1 = array_unique($result1);


//Percorre o array da diferença e atribui a mesma nas carencias
foreach ($result1 as $v) {
	 array_push($carencia_tit, $v);
}

$carencia_tit = array_unique($carencia_tit);

//coloca em uma variavel a carencia oficial
$carencia_oficial_dep = "";			
foreach($carencia_tit as $valor) {
	$carencia_oficial_dep .= $valor;
}	



echo "$stmt33 = pg_query('update usuario set tplano = '$plano_novo',
                                                    carencia = '$carencia_oficial_dep'
			  where id_usuario = '$id_usuario_dep'')";
}
exit;

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.