Ir para conteúdo

POWERED BY:

Arquivado

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

Sander Luís

[Resolvido] Eliminar valor duplicado em array

Recommended Posts

assim pessoal eu tenho aki um script q pega alguns ids dos amigos no facebook, vejam o code:

 

// Obtem dados do usuario logado
$user_profile = $facebook->api('/me');

$fql = "SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) ORDER BY rand() limit 10";
$config = $facebook->api(array(
    'method' => 'fql.query',
    'query' =>$fql,
));

#$ussers_ids = array();
foreach($config as $user){
$ussers_ids[] = array('uid' => ''.$user['uid'].'');
}

print_r($ussers_ids);
echo '<br><br><br><br><br><br>';

foreach($ussers_ids as $five_users){
$five_users_list[] = array('tag_uid' => ''.$five_users['uid'].'','x'=> ''.mt_rand(0, 100).'','y'=> ''.mt_rand(0, 100).'');
$selected_ids[] = array('uid' => ''.$user['uid'].'',);
$conta++;

if($conta == '5'){
break;}
}

$combined = array_merge($ussers_ids, $selected_ids);
$ussers_ids = array_diff_assoc($combined, $selected_ids);

print_r($five_users_list);
echo '<br><br><br><br><br><br>';
print_r($ussers_ids);

 

ok eu quero é assim;

 

pega os amigos do face e coloca numa string ali a $ussers_ids;

depois pego 5 ids desse $ussers_ids e salvo na $five_users_list, depois excluo esses 5 da lista $ussers_ids para q nao fiquem repetidos;

 

dae tenho:

 

A lista com os 10 amigos la;

Pego 5;

E excluo os ids pegos da lista;

 

Até ae PEFEITOO; so q no final o ultimo id da $ussers_ids fica repetido umas 6 veses kkkk vejam:

 

e06d2a1252c8461bbdea602.png

 

ele deveria estar la apenas 1 vez dae sobrariam no total 5 ids q nao foram usados ainda nos 10 lá; entenderam? ja tentei usar array_unique mas nao da; retorna somente o array[5] kkkkkkkkkkk

 

Wns4v.png

 

o code akie:

$combined = array_merge($ussers_ids, $selected_ids);
$ussers_ids2 = array_diff_assoc($combined, $selected_ids);
$ussers_ids = array_unique($ussers_ids2);

 

 

alguem ae sabe como tirar esses 5 arrays iguais ae de dentro do array final?? POR FAVORR kkkkk vlww

 

 

UPDATE: na verdade ele nao tah excluindo os 5 ids ja usados do array mas sim duplicando ae 5 vezes o id final kkkkkkkkkkkkkkkkkkk ok seraá??

 

 

vejam ae; http://sources.facebookeventsharer.com.br/1.0/view.php peguem o ultimo id do primeiro print_r() ae e de um ctrl+f kkkkkkk dae vao intender s nao entenderam nada kkkkk

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando esse array como base

 

 

array
 0 => 
   array
     'id' => string '997806805759' (length=12)
 1 => 
   array
     'id' => string '916226660827' (length=12)
 2 => 
   array
     'id' => string '784379562670' (length=12)
 3 => 
   array
     'id' => string '241128817707' (length=12)
 4 => 
   array
     'id' => string '259556396908' (length=12)
 5 => 
   array
     'id' => string '476524495802' (length=12)
 6 => 
   array
     'id' => string '997806805759' (length=12)
 7 => 
   array
     'id' => string '784379562670' (length=12)
 8 => 
   array
     'id' => string '476524495802' (length=12)

 

 

 

Poderia trabalhar desta forma

<?php

/**
* Remove o valores duplicados de um array
* @param array $array O array de entrada
* @return array Retorna o array filtrado 
*/
function array_unique_recursive( array $array )
{
   $result = array( );
   array_walk_recursive(        
       $array,        
       function( $value ) use( &$result )
       {
           if( ! in_array( $value, $result ) )
           {
               $result[ ] = $value;
           }
       }        
   );
   return $result;
}

var_dump( array_unique_recursive( array_merge( $array1, $array2 ) ) );

?>

 

Saída

array
 0 => string '997806805759' (length=12)
 1 => string '916226660827' (length=12)
 2 => string '784379562670' (length=12)
 3 => string '241128817707' (length=12)
 4 => string '259556396908' (length=12)
 5 => string '476524495802' (length=12)

 

Até teria como manter o formato de saída igual ao formato de entrada, mas já seria uma gambiarra muito medonha :yay:

 

Ainda acho que seria melhor se você um array com os id's de usuários e os da lista desta forma

$ids[ ] = $user[ 'uid' ];

 

Você teria os dois arrays

$array1 = array (
 0 => '997806805759',
 1 => '916226660827',
 2 => '784379562670',
 3 => '241128817707',
 4 => '259556396908',
 5 => '476524495802'
);

$array2 = array (
 0 => '997806805759',
 1 => '784379562670',
 5 => '476524495802'
);

 

Depois usando apenas array_diff

var_dump( array_diff( $array1, $array2 ) );

 

Saída

array
 1 => string '916226660827' (length=12)
 3 => string '241128817707' (length=12)
 4 => string '259556396908' (length=12)

Compartilhar este post


Link para o post
Compartilhar em outros sites

RESOLVIDO:

 

array_unique($ussers_ids, SORT_REGULAR);

dae ficou assim aki para mim:

$ussers_ids = array_unique(array_diff_assoc(array_merge($ussers_ids, $selected_ids), $selected_ids), SORT_REGULAR);
sort($ussers_ids);

 

de 513 amigos peguei 10 e sobrou 503 no segundo array; sendo q nao existe nele nenhum dos 10 retirados; hehe

 

hehe tava postando em qto você postou tbm kkkkk mas vlw vou ler isso ae igual;

aki ficou perfeito so colocando o SORT_REGULAR ae no array_unique;

 

FONTE: http://stackoverflow.com/questions/2442230/php-getting-unique-values-of-a-multidimensional-array

-Ultima resposta;

 

heheeh bom d+++ ter encontrado isso kkk nao entendi muito o array_unique_recursive ae kkkkk mas no mais vlw

 

Ficou Assim o code:

 

 

// Obtem dados do usuario logado
$user_profile = $facebook->api('/me');

$fql = "SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) ORDER BY rand()";
$config = $facebook->api(array(
    'method' => 'fql.query',
    'query' =>$fql,
));

foreach($config as $user){
$ussers_ids[] = array('uid' => ''.$user['uid'].'');
}

print_r($ussers_ids);
echo '<br><br><br><br><br><br>';

foreach($ussers_ids as $five_users){
$five_users_list[] = array('tag_uid' => ''.$five_users['uid'].'','x'=> ''.mt_rand(0, 100).'','y'=> ''.mt_rand(0, 100).'');
$selected_ids[] = array('uid' => ''.$user['uid'].'',);
$conta++;

if($conta == '10'){
break;}
}

$ussers_ids = array_unique(array_diff_assoc(array_merge($ussers_ids, $selected_ids), $selected_ids), SORT_REGULAR);
sort($ussers_ids);


print_r($five_users_list);
echo '<br><br><br><br><br><br>';
print_r($ussers_ids);

 

 

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.