2012-07-04 125 views
0

我有以下多維數組:如何刪除多維數組中特定鍵的重複值?

<?php 
$array = array(
array('first' => 1, 'second' => 1), 
array('first' => 1, 'second' => 1), 
array('first' => 2, 'second' => 1), 
array('first' => 3, 'second' => 1), 
array('first' => 3, 'second' => 1), 
array('first' => 3, 'second' => 1)); 

我怎樣可以刪除重複的first值?同時保留重複的second值。

處理數組應該是後:

array(
array('first' => 1, 'second' => 1), 
array('first' => 2, 'second' => 1), 
array('first' => 3, 'second' => 1)); 

參見:http://codepad.org/tMh28KMf

+0

你能給我們一個應該被刪除的鍵和一些不應該的例子嗎?當然預期的結果! – Florent

+0

我有點困惑你在輸出中尋找什麼。你需要'$ array = array(1,2,3,4,5,6);'或'$ array = array(array('first'=> 1),array('first'=> 2),數組('first'=> 3));'? – curtisdf

+0

對不起,我更新了我的回答 –

回答

0

你必須做一些foreach循環和重新組裝自己的數組。查看PHP的array_unique()

+0

我怎麼能用這個作爲我的例子? –

+0

對不起,我還是不太明白你需要什麼。你是否也想在「秒」鍵中過濾出重複的內容?它也可能有助於瞭解此代碼的用途。總體來說,可能有更好的方法來構建它。 – curtisdf

+0

好吧,我看到你不想在''first''之後從後面的鍵中刪除重複項。但是......如果你有一些「第一」複製品,但是它們在隨後的鍵「second」或「third」中有所不同? – curtisdf

1

代碼:

$array = array(
    array('first' => 1, 'second' => 1), 
    array('first' => 1, 'second' => 1), 
    array('first' => 2, 'second' => 1), 
    array('first' => 2, 'second' => 1), 
    array('first' => 3, 'second' => 1), 
    array('first' => 3, 'second' => 1) 
); 

$temp = array(); 
$new = array(); 

foreach($array as $value) 
{ 
    if(!in_array($value['first'],$temp)) 
    { 
     $temp[] = $value['first']; 
     $new[] = $value; 
    } 
} 

現在$new包含以下內容:

array(
    array('first' => 1, 'second' => 1), 
    array('first' => 2, 'second' => 1), 
    array('first' => 3, 'second' => 1), 
); 
+0

謝謝,但如何我如果還鍵「第二」和「第三」 - 在第二和第三我沒有刪除重複 –

+0

根據您更新的問題更新了答案。 – Anne

0

這將刪除重複的數組:

$array = array_map('unserialize', array_unique(array_map('serialize', $array)));

的關鍵仍然是相同的,所以你可能需要修復它們。

+0

我想只從鍵「第一」中刪除值 - 在我的數組中可以另外鍵,例如「秒」和「第三」 - 這些鍵不能刪除重複 –

+0

這是一個非常「不雅」的方法。 – Leigh

0

什麼,如果數組是這樣

$array = array(
    array('first' => 1, 'second' => 1), 
    array('first' => 1, 'second' => 1), 
    array('first' => 1, 'second' => 12), 
    array('first' => 2, 'second' => 1), 
    array('first' => 2, 'second' => 1), 
    array('first' => 3, 'second' => 1), 
    array('first' => 3, 'second' => 1) 
); 

$temp = array(); 
$new = array(); 

你想新的數組美元的新包含以下內容:

array(
    array('first' => 1, 'second' => 1), 
    array('first' => 2, 'second' => 1), 
    array('first' => 3, 'second' => 1), 
); 

array(
    array('first' => 1, 'second' => 1), 
    array('first' => 1, 'second' => 12), 
    array('first' => 2, 'second' => 1), 
    array('first' => 3, 'second' => 1), 
);