2014-04-19 65 views
0

我有一個包含這個PHP多維陣列中刪除部分重複

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) 
) 

是否有可能自動化?

+0

使用array_intersect http://php.net/manual/en/function.array-intersect.php功能 – Alex

+0

@Alex - 從我所看到的陣列的交叉處,只返回現有在多個陣列中的值,我想要的是相反的。刪除數組中已存在的重複值。 想像它像一個路徑或URL字符串像例如 Sub1的/分公司2 Sub1的/分公司2/Sub3中和 Sub1的/分公司2/Sub3中/ Sub4中 – flynn

+1

[0]出現在所有其他的太。 – user2180613

回答

2
$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; 
    } 
} 
+0

通過你在這裏給出的代碼後,數組保持不變,我嘗試了它,並輸出與輸入相同的結構。 – flynn

+0

您可以在IDEone.com上進行演示嗎? – Barmar

+0

舉例說明,它正在工作,我有一個錯字,非常感謝! 這裏是示例btw [link](http://ideone.com/jYJ6xb) – flynn