PHP删除"somewhat"从数组复制


PHP remove "somewhat" duplicates from array

我的数组由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_matchstrpos来做。(下面注释掉了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之外相同的条目。如果有,则删除

条目