[英]PHP remove “somewhat” duplicates from array
我的数组由url组成,我注意到有几个是“有点”的重复。 基本上一些网址只有一个www。 在网址前面,有些网站没有www。 我如何找到重复的那些,然后踢出具有较低域值的那个?
我玩了array_unique(),但问题是由于www,我的数组不是正确的重复。
当前数组:
Array
(
[0] => Array
(
[url] => www.domain1.com
[domain_value] => 653
)
[1] => Array
(
[url] => www.domain2.com
[domain_value] => 412
)
[2] => Array
(
[url] => www.domain3.com
[domain_value] => 723
)
[3] => Array
(
[url] => domain1.com
[domain_value] => 543
)
[4] => Array
(
[url] => domain2.com
[domain_value] => 956
)
)
我的目标:
Array
(
[0] => Array
(
[url] => www.domain1.com
[domain_value] => 653
)
[1] => Array
(
[url] => www.domain3.com
[domain_value] => 723
)
[2] => Array
(
[url] => domain2.com
[domain_value] => 256
)
)
你可以通过多种方式做到这一点。
第一个选项是将它们分成两个不同的数组: WWW
和NONWWW
您可以使用preg_match
或strpos
。 (strpos示例在下面注释掉)。
一个例子是这样的:
<?php
$www = array();
$nonwww = array();
foreach ($array as $domain) {
// USING PREG_MATCH
if (preg_match('/www/', $domain['url'])) {
$www[] = $domain;
} else {
$nonwww[] = $domain;
}
// USING STRPOS
//if (strpose($domain['url'], 'www') !== FALSE) {
// $www[] = $domain;
//} else {
// $nonwww[] = $domain;
//}
}
?>
现在这将返回两个数组:
WWW
Array
(
[0] => Array
(
[url] => www.domain1.com
[domain_value] => 653
)
[1] => Array
(
[url] => www.domain2.com
[domain_value] => 412
)
[2] => Array
(
[url] => www.domain3.com
[domain_value] => 723
)
)
NONWWW
Array
(
[0] => Array
(
[url] => domain1.com
[domain_value] => 543
)
[1] => Array
(
[url] => domain2.com
[domain_value] => 956
)
)
现在您所要做的就是匹配域名和www并删除重复项然后合并它们?
因此,遍历您的数组和每个项目。 检查它是否有www
,并查看是否存在除了www
删除之外的相同条目。 如果有,则删除该条目
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.