如何在多维数组中获得唯一值

时间:2012-05-02 06:01:53

标签: php multidimensional-array unique-values

我已经做过很多关于溢出和谷歌的调查,但结果都不适用于我的具体情况。

我有一个名为$ holder的占位符数组,值如下:

    Array ( 
    [0] => Array ( 
        [id] => 1 
        [pid] => 121 
        [uuid] => 1  
        )
    [1] => Array ( 
        [id] => 2 
        [pid] => 13
        [uuid] => 1
        )
    [2] => Array ( 
        [id] => 5 
        [pid] => 121 
        [uuid] => 1
        )
    ) 

我试图从这个多维数组中提取不同的/唯一的值。我想要的最终结果是包含(13,121)或(最好)数组的变量,如下所示: 阵列(     [0] => 13     [1] => 121 )

我再次尝试过序列化等等,但是在使用每个数组中的单个键操作时,不太明白它是如何工作的。

我试图尽可能清楚。我希望它有意义......

8 个答案:

答案 0 :(得分:57)

看起来很简单:将所有pid值提取到自己的数组中,通过array_unique运行:

$uniquePids = array_unique(array_map(function ($i) { return $i['pid']; }, $holder));

同样的想法:

$pids = array();
foreach ($holder as $h) {
    $pids[] = $h['pid'];
}
$uniquePids = array_unique($pids);

答案 1 :(得分:28)

在php> = 5.5中,您可以使用array_column

array_unique(array_column($holder, 'pid'));

答案 2 :(得分:3)

试试这个

foreach($arr as $key => $val) {
    $new_arr[] = $val['pid'];
}
$uniq_arr = array_unique($new_arr);

答案 3 :(得分:3)

只需迭代它并对结果应用array_unique

foreach($holder as $yourValues){
    $pids[] = $yourValues['pid'];
}
$yourUniquePids = array_unique($pids);

答案 4 :(得分:2)

假设您的数组名为$ holder:

$unique = array();
foreach( $holder as $h )
    if( ! in_array($h, $unique ) )
        $unique[] = $h;
我相信

比通过array_unique稍微有效一点。可能是一样的。

答案 5 :(得分:0)

您好请尝试下面给出的代码获取唯一值,然后对这些值进行排序

<?php

$sort_arr = unique_sort($holder, 'pid');
echo "<pre>";
print_r($sort_arr);
echo"</pre>";

/*function for get unique value then sort them*/

function unique_sort($arrs, $id) {
    $unique_arr = array();
    foreach ($arrs AS $arr) {

        if (!in_array($arr[$id], $unique_arr)) {
            $unique_arr[] = $arr[$id];
        }
    }
    sort($unique_arr);
    return $unique_arr;
}

感谢

答案 6 :(得分:0)

$uniquearray = [];
    for($i=0;$i<count($assocarray);$i++){
        if(!in_array($assocarray[$i]['KEY'],$uniquearray)){
            $uniquearray[$i]= $assocarray[$i]['KEY'];
        }
}

答案 7 :(得分:-1)

根据我的情况,我使用这种方法

List<String> array = new ArrayList<String>();
array.add("food");
array.add("drinks");
array.add("snack");
String result="";
if (array.contains("snack"))   // avoid null pointer exception
{
int index =array.indexOf("snack") //find the index of arraylist

result=array.get(index); 
}