我正在尝试防止在最终数组中出现重复项。我试图检查$media_candidate
对象列表中的重复项并编译它们:
$iterator = 0;
// ensure items in final array are unique
while ((count($final_array) < $numResults) && ($iterator < count($media_data))) {
$media_candidate = $media_data[$iterator++];
if(!in_array($media_candidate['id'], $final_array)){
$final_array[] = $media_candidate;
}
}
正如您在$final_array
343050519221992426_18478933
中看到的那样,最后三个元素出现3次,ID为{{1}}。关于发生了什么的任何想法?
答案 0 :(得分:4)
尝试:
if(!in_array($media_candidate['id'], $final_array)){
$final_array[] = $media_candidate['id'];
}
使用$final_array[]
,您可以在数组末尾添加新元素。
答案 1 :(得分:4)
首先:你没有截断最后的数组,所以所有的双重数据都会在最后结束。
第二:你正在重新发明轮子:阅读array_unique()
修改强>
第三:编辑完成后,有一种更简单的方法:
$final_array=array();
foreach($media_data as $m) $final_array[$m['id']]=$m;
//You might want the next line or not
$final_array=array_values($final_array);
实质上,您将唯一性外包给数组的哈希键。
答案 2 :(得分:2)
您正在检查$media_candidate['id']
,但在$media_candidate
$final_array
答案 3 :(得分:0)
尝试像这样的array_unique函数
$ final_array = array_unique($ media_candidate);