php删除foreach中的重复值

时间:2011-06-12 13:51:59

标签: php foreach

我有一个foreach迭代器,其中有500 group items个。如何删除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;
} 
}

3 个答案:

答案 0 :(得分:15)

使用array_unique

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

虽然技术上可以用相同的名称调用数组及其元素,但它必然会导致编程错误和混乱。

答案 1 :(得分:3)

看看你做了什么:

foreach ($data as $data) 

您正在覆盖$data的内容,然后在您希望它仍然是原始数组时访问$data。那是错的。

采用其他变量名称,非常常见的是$value

foreach ($data as $value)

希望这有助于即使它没有回答你的问题,但这可能是你问题的一部分,所以要小心;)

答案 2 :(得分: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响应...希望这可以帮助您查询是否在任何地方解决问题.. < / p>