繁体   English   中英

PHP从数组中删除“有些”重复项

[英]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
        )

)

你可以通过多种方式做到这一点。

第一个选项是将它们分成两个不同的数组: WWWNONWWW您可以使用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删除之外的相同条目。 如果有,则删除该条目

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM