2011-06-12 46 views
2

我有一個foreach迭代器,裏面有500 group items。如何刪除foreach中的重複值?php刪除重複的值在foreach

foreach ($data as $data) { 
if(!empty($data['name'])){ //check if have $data['name'] 
$name = $data['name']; 
$id = $data['id']; 
$date = $data['date']; 
$link = $data['link']; 
if(strpos($link, '.ads.')){ 
continue; //remove all the link contains `.ads.` 
}else{ 
// if `$link` is not repeat, echo the below data. how to use array_unique, remove all the values which repear in `$link` part? 
echo $name; 
echo $id; 
echo $date; 
echo $link; 
} 
} 
+1

你可以顯示一個示例重複值嗎? – 2011-06-12 13:54:32

回答

14

隨着array_unique

foreach (array_unique($data) as $d) { 
// Do stuff with $d ... 
} 

雖然技術上可以調用數組和同名的元素,它必將導致編程錯誤和混亂之後。

+2

+1。這裏是一個鏈接到文檔:http://www.php.net/manual/en/function.array-unique.php – Asaph 2011-06-12 13:56:40

+0

@Asaph擊敗你它;)更新與鏈接。 – phihag 2011-06-12 13:57:19

+0

在'foreach(array_unique($ data)'中添加'array_unique'作爲$ d){'只有一個數據返回。 – 2011-06-12 14:01:43

3

看你做什麼:

foreach ($data as $data) 

您將要覆蓋的$data的內容,那麼你訪問$data,而你希望它仍然是原來的數組。這是錯誤的。

採取額外的變量名,很常見的是$value

foreach ($data as $value) 

希望這有助於即使不回答你的問題,但是這可能是你的問題的一部分,所以要小心;)

0
$fetch=$q->result(); 

$array_result= json_decode(json_encode($fetch), true); 

$g=array(); 

    foreach($array_result as $p) 
    { 

     array_push($g,$p['email']); 

    } 

$array=array_values(array_filter(array_unique($g))); 

我正在使用這個時,我選擇了獨特的電子郵件ID的一些類似的電子郵件,這是通過Ajax響應來到...希望這可以幫助你可以詢問查詢,如果你做高保真問題的理解任何地方。 。