php получает уникальные значения многомерного массива

Возможный дубликат:
Многомерный массив php удаляет дубликаты

У меня такой массив:

$a = array ( 0 => array ( 'value' => 'America', ), 1 => array ( 'value' => 'England', ), 2 => array ( 'value' => 'Australia', ), 3 => array ( 'value' => 'America', ), 4 => array ( 'value' => 'England', ), 5 => array ( 'value' => 'Canada', ), ) 

Как удалить повторяющиеся значения, чтобы получить следующее:

 $a = array ( 0 => array ( 'value' => 'America', ), 1 => array ( 'value' => 'England', ), 2 => array ( 'value' => 'Australia', ), 4 => array ( 'value' => 'Canada', ), ) 

Я попытался использовать array_unique, но это не работает из-за того, что этот массив является многомерным, я думаю.

Edit: Мне также нужен этот массив, чтобы быть многомерным и в этом формате я не могу сгладить его.

array_unique использует преобразование строк перед сравнением значений для поиска уникальных значений:

Примечание . Два элемента считаются равными тогда и только тогда, когда (string) $elem1 === (string) $elem2 . В словах: когда строковое представление одно и то же. Будет использоваться первый элемент.

Но массив всегда будет преобразовываться в Array :

 var_dump("Array" === (string) array()); 

Вы можете решить эту проблему, указав режим SORT_REGULAR во втором параметре array_unique :

 $unique = array_unique($a, SORT_REGULAR); 

Или, если это не сработает, сериализуя массивы до и неэтериализируя их после вызова array_unique чтобы найти уникальные значения:

 $unique = array_map('unserialize', array_unique(array_map('serialize', $a))); 

Вот 🙂

 <?php $a = array ( 0 => array ( 'value' => 'America', ), 1 => array ( 'value' => 'England', ), 2 => array ( 'value' => 'Australia', ), 3 => array ( 'value' => 'America', ), 4 => array ( 'value' => 'England', ), 5 => array ( 'value' => 'Canada', ), ); $tmp = array (); foreach ($a as $row) if (!in_array($row,$tmp)) array_push($tmp,$row); print_r ($tmp); ?> 

Используйте флаг SORT_REGULAR.

 $unique_array = array_unique($a, SORT_REGULAR); 

Я не уверен, почему это помогает, но это так. По крайней мере, с php 5.3