【问题标题】:array unique make item disapear数组唯一使项目消失
【发布时间】:2018-07-10 13:50:04
【问题描述】:

我有这个数组:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 10
                    [id_list] => 1
                [id] => 1
            )

        [1] => Array
            (
                [0] => 11
                [id_list] => 1
                [id] => 1
            )

        [2] => Array
            (
                [0] => 12
                [id_list] => 1
                [id] => 1
            )

    )

[1] => Array
    (
        [0] => Array
            (
                [0] => 11
                [id_list] => 2
                [id] => 2
            )

        [1] => Array
            (
                [0] => 12
                [id_list] => 2
                [id] => 2
            )

    )

[2] => Array
    (
        [0] => Array
            (
                [0] => 13
                [id_list] => 4
                [id] => 4
            )
    )
)

这段代码(其中 $dataListe 是 fetchAll 查询的结果):

    $result = [];
    foreach($dataListe as $listeDiff){
       $result[] = $listeDiff;
    }
    // $resultUnique = array_unique($result);
    echo "<pre>".print_r($result, true)."</pre>";

如您所见,我的第一个和第二个数组中有一些相似的联系人(但第一个和第三个数组中的联系人可以相同,我是否选择将我的联系人添加到我的第三个数组中)。

我想删除通用数组中每个元素的重复项。

但是当我使用数组唯一时,我得到了这个结果:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 10
                    [id_list] => 1
                    [id] => 1
                )
            [1] => Array
                (
                    [0] => 11
                    [id_list] => 1
                    [id] => 1
                )
            [2] => Array
                (
                    [0] => 12
                    [id_list] => 1
                    [id] => 1
                )
        )
) 

请帮助我在最后只保留每个数组的一项!

编辑:我用下面的代码几乎得到了很好的结果,但是 id 12 不见了

            $result = [];
        foreach($dataListe as $listeDiff){
            foreach($listeDiff as $contact){
                if(!in_array($contact,$result)){
                    $result[] = $contact;
                }
                break;
            }
        }

【问题讨论】:

    标签: php arrays multidimensional-array unique


    【解决方案1】:

    正如 PHP 文档所说:

    注意:请注意,array_unique() 不适用于多维数组。 (http://php.net/manual/en/function.array-unique.php)

    你可以试试这个解决方案

    $uniqueResult = array_map("unserialize", array_unique(
        array_map("serialize", $result)
    ));
    

    正如@daveilers 关于这个问题How to remove duplicate values from a multi-dimensional array in PHP 所建议的那样。

    【讨论】:

    • 已经尝试过这种方法,但我得到的结果与我的 $dataliste 完全相同
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    相关资源
    最近更新 更多