从导致内部服务器错误的数组中取消设置


unset from array causing internal server error

我试图通过删除重复的值来合并两个数组。也就是说,如果$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打印时,我得到了重复的条目…

这段代码有什么问题?

请帮忙

您需要在unset($array_two[$i]);之后添加break;,因为它仍然通过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;
        }
    }
}