一尘不染

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,但是我认为由于该数组是多维的,因此无法正常工作。

编辑:我还需要此数组是多维的,并且以这种格式,我不能展平它。


阅读 657

收藏
2020-05-29

共1个答案

一尘不染

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)));
2020-05-29