PHP获取multidimensional array的唯一值

可能重复:
phpmultidimensional array删除重复

我有一个这样的数组:

$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,但是这是行不通的,因为这个数组是多维的,我想。

编辑:我也需要这个数组是多维的,在这种格式下,我不能把它弄平。

在比较值以查找唯一值之前, array_unique正在使用string转换:

注意 :当且仅当(string) $elem1 === (string) $elem2两个元素被认为是相等的。 用词表示:当string表示是相同的。 第一个元素将被使用。

但是一个数组总是会转换成Array

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

你可以通过在array_unique的第二个参数中指定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); 

我不知道为什么它有帮助,但它确实。 至less在PHP 5.3中