【问题标题】:PHP multi dimensional Array removing partial duplicatesPHP多维数组删除部分重复
【发布时间】:2014-04-19 15:33:00
【问题描述】:

我有一个包含这个的数组

Array ( 
[0] => Array ( [0] => Sub1 ) 
[1] => Array ( [0] => Sub1 [1] => Gold ) 
[2] => Array ( [0] => Sub1 [1] => Sub2 ) 
[3] => Array ( [0] => Sub1 [1] => Sub2 [2] => Sub3 ) 
[4] => Array ( [0] => Sub1 [1] => Sub2 [2] => Sub3 [3] => Sub4 ) 
[5] => Array ( [0] => Sub1 [1] => Test ) 
)

如何删除数组 [2] [3],因为它们存在于 [4] 中

数组会是这样的

Array (  
[0] => Array ( [0] => Sub1 [1] => Gold )  
[1] => Array ( [0] => Sub1 [1] => Sub2 [2] => Sub3 [3] => Sub4 ) 
[2] => Array ( [0] => Sub1 [1] => Test ) 
)

可以自动化吗?

【问题讨论】:

  • @Alex - 从我所看到的数组相交它只返回多个数组中存在的值,我想要相反的。删除数组中已经存在的重复值。想象它像一个路径或一个 url 字符串,例如 Sub1/Sub2 Sub1/Sub2/Sub3 和 Sub1/Sub2/Sub3/Sub4
  • [0] 也出现在所有其他的。

标签: php arrays algorithm sorting


【解决方案1】:
$result = array();
foreach ($original as $orig_el) {
    $found = false;
    foreach ($result as &$new_el) {
        if (count($orig_el) >= count($new_el) && array_slice($orig_el, 0, count($new_el)) == $new_el) {
            $new_el = $orig_el;
            $found = true;
            break;
        }
    }
    if (!$found) {
        $result[] = $orig_el;
    }
}

【讨论】:

  • 经过您在此处提供的代码后,数组保持不变,我试了一下,它输出与输入相同的结构。
  • 你能在 IDEone.com 上做一个演示吗?
  • 做了示例,它正在工作,我有一个错字,非常感谢!这是示例顺便说一句link
猜你喜欢
  • 2016-11-18
  • 1970-01-01
  • 2015-05-22
  • 2011-04-05
  • 2023-03-27
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
相关资源
最近更新 更多