我应该使用什么来代替php中的array_unique



我在一个数组中得到了重复的数据,这些数据存储在我的DB中。我正在使用array_unique来细化重复的数据,但它不起作用。请告诉我有没有其他方法可以使数据唯一并以这种方式存储在数据库中。

if (preg_match($keywords, $links[$i]->href)) {
if (filter_var($links[$i]->href, FILTER_VALIDATE_URL) !== false) {
array_push($mainNews, $links[$i]->href);
}
}
return (array_unique($mainNews));

我得到的错误:

C:\examplep\htdocs\pacra crawlers\modules\crawlers\services\MainNewsRepository.php中未定义的数组密钥1

for ($i = 0; $i < count($mainNewsLinks); $i++) {
$mainNews = new MainNews();
$mainNews->newspaper_id = $this->newspaperId;
$mainNews->sector_id = $sectorId;
$mainNews->url = $mainNewsLinks[$i];
$mainNews->save();
}
return ['status' => true];
}

C:\examplep\htdocs\pacra爬网程序\模块\爬网程序\服务\MainNewsRepository.php:46Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("未定义的数组键1","C:\examplep\htdocs\pacra爬网程序\模块\爬网程序\服务\ MainNewsRepository.php"(

array_unique正在工作,但尽管它正在删除重复项,但它仍在维护相同的密钥,即

如果您在具有的阵列中有以下项目

position/key value
0         a
1         a
2         b

array_unique将返回

position/key value
0         a
2         b

这就是为什么在基于递增索引CCD_ 3的数组中循环时获得CCD_。

基于您的样本,您可以使用foreach循环,因为您只对值感兴趣,例如

foreach($mainNewsLinks as $mainNewsLink) {
$mainNews = new MainNews();
$mainNews->newspaper_id = $this->newspaperId;
$mainNews->sector_id = $sectorId;
$mainNews->url = $mainNewsLink;
$mainNews->save();
}

如果你想继续索引或基于索引迭代每个元素,你可以在返回中使用array_values,例如


return array_values(array_unique($mainNews));

从您的函数重置数组键到递增索引

相关内容

  • 没有找到相关文章

最新更新