2015-12-22 31 views
-4

我有這個陣列PHP刪除多維數組重複的值,但保持最後一個

$items = Array ( 
[0] => Array ([0] => xx [1] => 'update') 
[1] => Array ([0] => bx [1] => 'update') 
[2] => Array ([0] => xx [1] => 'creation') 
[3] => Array ([0] => fs [1] => 'creation') 
[4] => Array ([0] => tx [1] => 'update') 
[5] => Array ([0] => bx [1] => 'creation') 
) 

我試圖刪除基於第一個元素的重複值(XX,BX,斧等)

如果從同一個表匹配兩個要素,我想保持較高的指數是最後一個, 結果會像下面

$items = Array ( 
    [0] => Array ([0] => xx [1] => 'creation') 
    [1] => Array ([0] => bx [1] => 'creation') 
    [2] => Array ([0] => fs [1] => 'creation') 
    [3] => Array ([0] => tx [1] => 'update') 
    ) 

保持上一次是有點的conf使用我,因爲我是PHP的新手。 預先感謝您

+0

推測「ax」條目應該也在結果數組中? – DaveyDaveDave

+0

是的,我已經改變了,它的XX,我忘了編輯 – PaxBin

回答

3

通用的重複數據刪除:

$result = []; 
foreach ($array as $item) { 
    $result[$item[0]] = $item; 
} 

功能:

$result = array_reduce($array, function ($acc, $i) { 
    return [$i[0] => $i] + $acc; 
}, []) 

太棒了:

array_column($array, null, 0); 
-1

好了,我找到了解決辦法, 我開始BU扭轉數組,然後執行以下代碼

$taken = array(); 
$reverse = array_reverse($items, true); 
foreach($reverse as $key => $item) { 
    if(!in_array($item[0], $taken)) { 
     $taken[] = $item[0]; 
    } else { 
     unset($reverse[$key]); 
    } 
}