【问题标题】:PHP remove duplicate arrays inside a multi dimensional arrayPHP删除多维数组中的重复数组
【发布时间】:2015-05-22 03:18:14
【问题描述】:

我需要检查 2D 数组($arr)是否有任何重复项(顺序无关紧要)并将它们放入一个干净的数组中。

例如:

$arr = array ( 
    array (-9,1,8 ), 
    array (-9,2,7 ),
    array (-9,3,6 ),
    array (-9,4,5 ),
    array (-9,5,4 ),
    array (-9,6,3 ),
    array (-9,7,2 ),
    array (-9,8,1 )
)

需要最终成为:

$cleanArr = array ( 
    array (-9,1,8 ), 
    array (-9,2,7 ),
    array (-9,3,6 ),
    array (-9,4,5 )
)

$cleanArr =  array(     
    array (-9,5,4 ),
    array (-9,6,3 ),
    array (-9,7,2 ),
    array (-9,8,1 )
)

是否有用于此的 PHP 函数,或者我需要执行某种循环来清除重复项?

【问题讨论】:

    标签: php arrays multidimensional-array duplicates


    【解决方案1】:

    没有任何函数可以完全做到这一点,但您可以使用函数组合。您可以先将所有子批次数组先按升序排序,然后对它们进行序列化,利用array_unique,然后再次反序列化以再次获得该多维:

    foreach($arr as &$a){ sort($a); }
    $arr = array_map('unserialize', array_unique(array_map('serialize', $arr)));
    print_r($arr);
    

    【讨论】:

    • 是的,效果很好。太糟糕了,没有一个功能可以解决这个问题。 ++ 为伟大的工作而努力!
    • @Icewine 我很高兴这有帮助
    【解决方案2】:

    试试这个:

        <?php
    
        $arr = array ( 
        array (-9,1,8 ), 
        array (-9,2,7 ),
        array (-9,3,6 ),
        array (-9,4,5 ),
        array (-9,5,4 ),
        array (-9,6,3 ),
        array (-9,7,2 ),
        array (-9,8,1 )
        );
    
        $arr = array_map(function($n) {return explode(',', $n);}, (array_unique(array_map(function($n) {sort($n); return implode(',', $n);}, $arr))));
    
    echo var_export($arr, true);
    
    ?>
    

    输出:

    array (
      0 => 
      array (
        0 => '-9',
        1 => '1',
        2 => '8',
      ),
      1 => 
      array (
        0 => '-9',
        1 => '2',
        2 => '7',
      ),
      2 => 
      array (
        0 => '-9',
        1 => '3',
        2 => '6',
      ),
      3 => 
      array (
        0 => '-9',
        1 => '4',
        2 => '5',
      ),
    )
    

    【讨论】:

      猜你喜欢
      • 2016-11-18
      • 2019-09-04
      • 1970-01-01
      • 2017-01-01
      • 2011-04-05
      • 1970-01-01
      • 2013-05-08
      • 2012-05-05
      • 1970-01-01
      相关资源
      最近更新 更多