从数组中删除相同的值

时间:2013-08-27 10:35:02

标签: php arrays

我有一个像这样的数组

Array
(
    [0] => u1,u2
    [1] => u2,u1
    [2] => u4,u3
    [3] => u1,u3
    [4] => u1,u2
)

我想从数组中删除类似的值 我想要一个像

一样的外出
Array
    (
        [0] => u1,u2
        [1] => u4,u3
        [2] => u1,u3

    )

我试图通过输入数组循环,按字母顺序对索引的值进行排序,然后尝试使用array_search查找重复的值。但从未真正获得所需的输出

任何帮助赞赏

5 个答案:

答案 0 :(得分:3)

您无法单独使用array_unique(),因为这只会匹配完全相同的重复项。因此,您必须循环并检查该值的每个排列。

您可以使用array_unique()开头,然后循环:

$myArray = array('u1,u2', 'u2,u1', 'u4,u3', 'u1,u3', 'u1,u2');

$newArr = array_unique($myArray);
$holderArr = array();

foreach($newArr as $val)
{
    $parts = explode(',', $val);
    $part1 = $parts[0].','.$parts[1];
    $part2 = $parts[1].','.$parts[0];

    if(!in_array($part1, $holderArr) && !in_array($part2, $holderArr))
    {
        $holderArr[] = $val;
    }
}

$newArr = $holderArr;

上面的代码将产生以下输出:

Array ( 
    [0] => u1,u2 
    [1] => u4,u3 
    [2] => u1,u3 
)

答案 1 :(得分:0)

使用array_unique() PHP函数:

http://php.net/manual/en/function.array-unique.php

答案 2 :(得分:0)

使用函数array_unique($array)

答案 3 :(得分:0)

array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

php manual

答案 4 :(得分:0)

因为u1,u2!== u2,u1

    $array=array('u1,u2','u2,u1','u4,u3','u1,u3','u1,u2');
    foreach($array as $k=>$v)
    {
        $sub_arr = explode(',',$v);
        asort($sub_arr);
        $array[$k] = implode(',',$sub_arr);
    }

    $unique_array = array_unique($array);

    //$unique_array = array_values($unique_array) //if you want to preserve the ordered keys