我有一个像这样的数组
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查找重复的值。但从未真正获得所需的输出
任何帮助赞赏
答案 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函数:
答案 2 :(得分:0)
使用函数array_unique($array)
答案 3 :(得分:0)
array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
答案 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