2015-01-08 100 views
3

我不知道標題真正得到跨在問我什麼,所以這裏就是我想要做的事:PHP - 如何測試重複的元素值多維數組以任意順序

我有一組數組,每組有四個整數元素,即。

Array(Array(1,2,3,4), Array(4,2,3,1), Array(18,3,22,9), Array(23, 12, 33, 55)) 

我基本上需要除去在上面的例子有以任意順序相同的值的兩個陣列中的一個,如索引0和1。

當只有兩個元素需要檢查時,使用this question中的最佳答案代碼,我可以很容易地做到這一點。

我的多維數組在任何給定的時間都可以有1-10個數組,所以我似乎無法找出處理這種結構的最佳方法,並以任何順序刪除具有相同數字的數組。

非常感謝!

回答

4

我一直在想這件事,我認爲使用一個精心設計的封閉with array_filter可能我會去這個方式:

$matches = array(); 
$array = array_filter($array, function($ar) use (&$matches) { 
    sort($ar); 
    if(in_array($ar, $matches)) { 
     return false; 
    } 
    $matches[] = $ar; 
    return true; 
}); 

在這裏看到一個例子:http://ideone.com/Zl7tlR

編輯:$array將是您的最終結果,忽略$matches,因爲它只是在過濾器關閉期間使用。

+0

這看起來像一個很好的答案,但我剛剛跑這個並得到相同的陣列回來? – Scriptable

+0

ideone示例似乎有效。你能告訴我你給了什麼輸入嗎? – Scopey

+0

對不起。我必須複製它錯誤,我有'$ ar',在那裏我應該有'$ array'。 – Scriptable