2016-01-14 37 views
2

刪除重複對我有一個數組在陣列中,並且還以相反的順序PHP Laravel

array:2 [▼ 
     0 => array:2 [▼ 
     0 => 159 
     1 => 158 
     ] 
     1 => array:2 [▼ 
     0 => 159 
     1 => 158 
     ] 
     2 => array:2 [▼ 
     0 => 158 
     1 => 159 
     ] 
    ] 

我想要刪除的重複者和以相反的順序重複。例如,索引0和索引1具有相同的值159 and 158,其順序也相同,如0 => 1591 => 158。我想刪除索引10。既然是一樣的。如果你注意到索引2。它具有相同的值,唯一不同的是訂單0 => 1581 => 159我也想刪除它,因爲它是相同的值對。我該怎麼辦,如果這個數組是$remove_arr

所以以後我會刪除索引2,要麼指數01應該只有一個索引左側。

回答

1

count(array_intersect())獲取數組中相同項目的數量。 當它等於陣列lenght,刪除它們

$remove_arr = [ 
[158, 159], 
[158, 159], 
[159, 158] 
]; 

for($i = count($remove_arr)-1; $i >= 0 ; $i--) { 
    $j = $i-1; 
    while ($j >= 0) { 
     if (count(array_intersect($remove_arr[$i],$remove_arr[$j])) == count($remove_arr[$i])) 
      { unset($remove_arr[$i]); break; } 
     else $j--; 
    } 
} 

print_r($remove_arr); 
+0

很高興幫助!關於數組函數 - http://php.net/manual/en/ref.array.php – splash58

+0

謝謝。將看看它:) – jackhammer013

2

之一這裏的一個較短的溶液:

$data = [[158, 159], [158, 159], [159, 158]]; 

$unique = array_unique(array_map(function ($item) { 
    sort($item); return $item; 
}, $data), SORT_REGULAR); 

dump($unique); // This will output [[158, 159]] 

將該溶液排序等級2數組的內容。因此排序後,最後的值也將變爲[158, 159],因此可以通過array_unique將其正確評估爲重複項。

+0

我沒有一步了這個變種:)。 +1 – splash58