我的数组由网址组成,我注意到有几个是“有些”重复。 基本上一些网址只有一个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
)
)
答案 0 :(得分:2)
你可以通过多种方式做到这一点。
第一个选项是将它们分成两个不同的数组: 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并删除重复项然后将它们合并回去?
答案 1 :(得分:0)
循环遍历你的数组和每个项目。检查其中是否包含www
,并查看是否存在除www
已删除之外的相同条目。如果有,则删除条目