2011-06-12 109 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响应来到...希望这可以帮助你可以询问查询,如果你做高保真问题的理解任何地方。 。