在修剪空白的同时从数组中删除(不区分大小写)重复项


removing (case insensitively) duplicates from array while trimming whitespace

这是一个与从不区分大小写的数组中删除重复值的最佳解决方案非常相似的问题

在接受的答案中,第一条注释提到使用trim()来删除空白。

我想这样做,但我不知道修剪应该去哪里

有人能帮我吗?

$r = array_intersect_key($input, array_unique(array_map('strtolower', $input)));

就像这样:

$input = array('test ', 'test', ' test2', 'test2');
$r = array_intersect_key($input, array_unique(array_map('strtolower', array_map('trim',$input))));

Fiddle

如果你也需要修剪结果,你应该在结果上应用阵列图太

$r = array_map('trim',array_intersect_key($input, array_unique(array_map('strtolower', array_map('trim',$input)))));

您可以使用一些方法,如array_walk,以便在删除重复项之前修剪数组的每个项,如:

function trimming(&$val, $key) {
    $val = trim ($val);
}
$data = array("  vvv  ","ccc   ");
array_walk($data, 'trimming');
print_r($data);

然后您可以使用代码删除重复项。