Php 在数组中查找重复项的位置并仅更改第二个重复项

Php 在数组中查找重复项的位置并仅更改第二个重复项,php,arrays,duplicates,Php,Arrays,Duplicates,我有这样一个数组: array('field1', 'field2', 'field3', 'field2', 'field4', 'field1', 'field2'); 我想做的是找到任何重复的值,并更改第二个(以及更多)重复条目,如下所示: array('field1', 'field2', 'field3', 'field2_2', 'field4', 'field1_2', 'field2_3'); PHP中是否有返回重复项的键的函数?您可以使用该函数查找数组中具有给定值的所有键,

我有这样一个数组:

array('field1', 'field2', 'field3', 'field2', 'field4', 'field1', 'field2');
我想做的是找到任何重复的值,并更改第二个(以及更多)重复条目,如下所示:

array('field1', 'field2', 'field3', 'field2_2', 'field4', 'field1_2', 'field2_3');
PHP中是否有返回重复项的键的函数?

您可以使用该函数查找数组中具有给定值的所有键,然后迭代这些项(第一个项除外),为值添加计数器:

$array = array('field1', 'field2', 'field3', 'field2', 'field4', 'field1', 'field2');
foreach ($array as $value) {
    $keys = array_keys($array, $value);
    // get rid of the first entry
    array_shift($keys);
    // add counters to duplicates
    for ($i = 0; $i < count($keys); $i++) {
        $array[$keys[$i]] = $value . "_" . ($i + 2);
    }
}
print_r($array);

Array
(
    [0] => field1
    [1] => field2
    [2] => field3
    [3] => field2_2
    [4] => field4
    [5] => field1_2
    [6] => field2_3
)