繁体   English   中英

数组未设置导致内部服务器错误

[英]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打印时,我得到重复的条目。

这段代码有什么问题?

请帮忙

您需要添加break; unset($array_two[$i]);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;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM