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中