我的数组由url组成,我注意到有几个"有点"重复。基本上有些url只有一个www。在url前面,还有一些域名没有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
之外相同的条目。如果有,则删除