0

我正在尝试通过删除重复值来合并两个数组。也就是说,如果 $array_two[$i]->id == $array_one[$j]->yelp_id那么它是重复的。所以我试图删除它。

这是我的代码..

for($i=0;$i<count($array_two);$i++)
   {
   for($j=0;$j<count($array_one); $j++)
    {
      if($array_two[$i]->id == $array_one[$j]->yelp_id)
       {            

        //print_r($array_two[$i]);
        unset($array_two[$i]);

        }

    }
}
$array=array_merge($array_one,$array_two);

当我这样做时,我得到一个

内部服务器错误 500..

但是当我使用打印时,print_r我得到了重复的条目..

这段代码有什么问题?

请帮忙

4

1 回答 1

3

您需要在break;之后添加,unset($array_two[$i]);因为它仍在经历for($j)并试图再次达到该值,但它不再存在。

此外,您应该将count()函数移到 for 循环声明之外。它每次都重新计算长度,如果您从数组中删除项目,它将不会命中数组中的最后几个项目,因为每次计数都会减少。

$count1 = count($array_two);
$count2 = count($array_one);
for ($i = 0; $i < $count1; $i++) {
    for ($j = 0; $j < $count2; $j++) {
        if ($array_two[$i]->id == $array_one[$j]->yelp_id) {
            unset($array_two[$i]);
            break;
        }
    }
}
于 2013-03-29T13:45:42.620 回答