2017-12-27 124 views
-2

如何使用foreach()忽略数组中的重复值?如何使用for-each忽略数组中的重复值?

Array 
(
    [0] => stdClass Object 
     (
      [sa_uc_id] => 1 
      [uc_um_id] => 1 
      [ui_coverimage] => 1513351051.jpg 
      [um_name] => Suresh Gyan Vihar University 
     ) 

    [1] => stdClass Object 
     (
      [sa_uc_id] => 2 
      [uc_um_id] => 1 
      [ui_coverimage] => 1513351051.jpg 
      [um_name] => Suresh Gyan Vihar University 
     ) 

    [2] => stdClass Object 
     (
      [sa_uc_id] => 3 
      [uc_um_id] => 1 
      [ui_coverimage] => 1513351051.jpg 
      [um_name] => Suresh Gyan Vihar University 
     ) 

) 
+0

它是你不想重复的[ui_coverimage]吗? – halojoy

+0

为什么mysql标签????????? – scaisEdge

+0

这些字段来自数据库,我希望un_name唯一 –

回答

0

嵌套阵中还有的array_uniqe一段时间适度多层次的,因为列表项sa_uc_id的答案是unique.In你上面有使用数组而不sa_uc_id使用array_unique。如果上面的回答不起作用,那么试试这个...

$data_ar = array();//your array here; 
$temp_ar = array(); 

foreach($data_ar as $value) 
{ 
    $tempCheck = 0; 
    foreach($temp_ar as $val) 
    { 
     if($val['uc_um_id'] == $val['uc_um_id']) // whatever the item value you want to check wheather its uc_um_id or um_name 
     { 
      $tempCheck = 1; 
     } 
    } 
    if($tempCheck === 0) 
    $temp_ar[] = $value; 
} 
var_dump($temp_ar); 
+0

if($ value ['uc_um_id'] == $ val ['uc_um_id'])//无论您想要检查的项目值是什么,它的uc_um_id或um_name {temp_lib} {tempCheck = 1; } –

+0

@YogeshJamkar哇,你有答案。 –

+0

是的,它的工作很好......谢谢 –

0

这是另一种方式。没有中间变量被保存。

我们使用它来从多种重叠查询中去除重复结果。

$input = array_map("unserialize", array_unique(array_map("serialize", $input))); 
+0

这不会在OP的情况下工作。拿他的输入数组并检查。这是因为完整的子阵列不相同。只有一个或两个子阵列的索引是相同的。在这种情况下,他将失去有用的信息,或根本没有什么会发生 –

+1

在那里你不得不提到你的答案,如果它是从某处复制的https://stackoverflow.com/questions/307674/how-to-remove -duplicate-values-from-a-multi-dimensional-array-in-php –

+0

是的..我忘了提及它。 –