[英]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.