我试图通过删除重复的值来合并两个数组。也就是说,如果$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;
}
}
}