Array Unique with Associative Array – Remove Duplicates

Eu tenho uma matriz associativa com alguns itens duplicados. Por exemplo, eu tenho:

array(), 'user_first'=>array()); 

O que produz algo como abaixo:

 Array ( [user_id] => Array ( [0] => 594 [1] => 597 [2] => 594 ) [user_first] => Array ( [0] => John [1] => James [2] => John ) ) 

Eu gostaria de desinfetar toda essa matriz para que apenas o usuário John apareça uma vez (com base em user_id).

Eu tentei o seguinte:

  <?php $unique = array_unique($group_array); print_r($unique); 

Mas isso não parece funcionar. Quaisquer outras ideias sobre como posso remover os itens duplicados na matriz?

Qualquer ajuda seria ótimo!

    Outra abordagem seria encontrar o exclusivo user_id s e, importante, suas chaves de matriz, então mantenha apenas os valores correspondentes de cada uma das colunas.

     $group_array = array( 'user_id' => array(594, 597, 594, 598 ), 'user_first' => array('John', 'James', 'John', 'John'), ); // Find unique user_ids $uniques = array_unique($group_array['user_id']); // Keep only the uniques foreach ($group_array as $column => $collection) { $group_array[$column] = array_intersect_key($collection, $uniques); } print_r($group_array); 

    Um par de coisas:

    a function array_unique não se encheckbox em sub-arrays

    Leia o manual: http://php.net/manual/en/function.array-unique.php “Dois elementos são considerados iguais se e somente se (string) $ elem1 === (string) $ elem2. Em palavras: quando a representação de string é a mesma. O primeiro elemento será usado. ”

    No seu caso, $ elem1 e $ elem2 são ambos arrays

    Este script remove duplicatas em user_id e mantém vários nomes iniciais se seus IDs forem diferentes:

     $group_array = Array( 'user_id' => Array( 594, 597, 594, 598, ), 'user_first' => Array( 'John', 'James', 'John', 'John', ) ); $dup = array(); for ($i=0; $i 

    saída:

     Array ( [user_id] => Array ( [0] => 594 [1] => 597 [3] => 598 ) [user_first] => Array ( [0] => John [1] => James [3] => John ) ) 

    Uma possível solução é usar o efeito colateral de filtragem de array_combine(...) :

     $array = [ 'user_id' => [ 0 => 594, 1 => 597, 2 => 594 ], 'user_first' => [ 0 => 'John', 1 => 'James', 2 => 'John' ] ]; $combinedArray = array_combine($array['user_id'], $array['user_first']); 

    Então nós conseguimos a matriz

     Array ( [594] => John [597] => James ) 

    Para restaurar a estrutura original, simplesmente podemos extrair as chaves e os valores:

     $array = [ 'user_id' => array_keys($combinedArray), 'user_first' => array_values($combinedArray), ]; 

    Resultado:

     Array ( [user_id] => Array ( [0] => 594 [1] => 597 ) [user_first] => Array ( [0] => John [1] => James ) )