PHP:如何删除重复的数组项ONCE

时间:2017-10-20 07:27:39

标签: php

我有一个数组:

$arr1 = [1,2,2,3,3,3];

是否有任何方法可以删除重复值,例如,

some_function($arr1,3);

给了我输出$arr1 = [1,2,2,3,3]

3 个答案:

答案 0 :(得分:2)

这应该有用......

function removeduplicate($myarray,$needle) {

    if (($nmatches = count($matches = array_keys($myarray,$needle))) >= 2) {

        for ($i=0; $i<$nmatches; $i++) {
            if ($matches[$i+1] == (1+$matches[$i])) {
                array_splice($myarray,$matches[$i],1);
                break;
            }
        }
    }

    return $myarray;
}

使用此功能......

$arr1 = [1,2,2,3,3,3,4,7,3,3];
$newarray = removeduplicate($arr1,3)
print_r($newarray);

<强> EDITED

如果您希望该函数直接修改原始数组,则可以执行此操作(如果删除了某个字符,该函数将返回true,如果没有,则返回false)...

function removeduplicate(&$myarray,$needle) {

    if (($nmatches = count($matches = array_keys($myarray,$needle))) >= 2) {

        for ($i=0; $i<$nmatches; $i++) {
            if ($matches[$i+1] == (1+$matches[$i])) {
                array_splice($myarray,$matches[$i],1);
                return true;
            }
        }
    }

    return false;
}

所以,现在你可以做......

$arr1 = [1,2,2,2,2,2,3,3,3,4,2,2];
removeduplicate($arr1,2);
print_r($arr1);

答案 1 :(得分:2)

根据评论,检查您要搜索的元素是否有多个,然后查找并删除其中一个元素。

function remove_one_duplicate( $arr, $target ) {
    if( count( array_keys( $arr, $target ) ) > 1 ) {
        unset( $arr[array_search( $target, $arr )] );
    }

    return $arr;
}

答案 2 :(得分:0)

此函数将复制仅跳过指定元素的第二个实例的数组。

function removeOnce($array, $elem) {
    $found = 0;
    $result = [];
    foreach ($array as $x) {
        if ($x == $elem && (++$found) == 2) {
            continue;
        }
       $result[] = $x;
    }
    return $result;
}