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
)