2014-09-13 54 views
0

我有一個數組有多個單詞集,其中一些可能會重複,並且我想用單詞替換數組中的重複單詞:重複,並且還保留一個原始。 所以,如果我有5次重複,我希望他們的4到重複的更換,並保持原來的替換數組中的重複單詞(不刪除)

$my_array = (0=>'test', 1=>'test2',2=>'test3',3=>'test'); 

正如你在我的數組看到,數組鍵0和3具有相同的價值,我想更換與字的最後一個值「複製」

$my_array = (0=>'test', 1=>'test2',2=>'test3',3=>'duplicate'); 

我嘗試了不同的方法,但都沒有成功:(

+2

http://stackoverflow.com/questions/13215668/find-and-replace-duplicates-in-array的重複 – 2014-09-13 17:31:54

回答

0

試試這個,只記得您曾經訪問過什麼樣的價值觀。

$visited = array(); 
foreach($my_array as $key=>$val) { 
    if(isset($visited[$val])) { 
     $my_array[$key] = 'duplicate'; 
    } else { 
     $visited[$val] = true; 
    } 
} 
+0

數組鍵並不意味着有存儲在它們中的值。 – 2014-09-13 17:57:00

1

下面是做這件事:

<?php 

$my_array = array(0=>'a', 1=>'a',2=>'b',3=>'c'); 

print_r($my_array); 

$my_array2 = array_unique($my_array); 

foreach($my_array as $key => $value) { 
    if (!array_key_exists($key, $my_array2)) { 
     $my_array[$key] = 'duplicate'; 
    } 
} 

print_r($my_array); 
+0

如果鍵不是數字並且不是從0開始,則不起作用。您應該使用foreach。 – 2014-09-13 17:39:53

+0

@CharlotteDunois你說得對。糾正。 – 2014-09-13 17:46:14