2017-12-27 123 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

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