【问题标题】:finding position of duplicate entry in array and changing only the second duplicate在数组中查找重复条目的位置并仅更改第二个重复项
【发布时间】:2020-03-08 17:33:14
【问题描述】:

我有一个这样的数组:

array('field1', 'field2', 'field3', 'field2', 'field4', 'field1', 'field2');

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

array('field1', 'field2', 'field3', 'field2_2', 'field4', 'field1_2', 'field2_3');

PHP 中是否有返回重复项的键的函数?

【问题讨论】:

    标签: php arrays duplicates


    【解决方案1】:

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

    $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
    )
    

    Demo on 3v4l.org

    【讨论】:

      猜你喜欢
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      相关资源
      最近更新 更多