Php: array_unique缺少重复项



几天来我一直在努力解决array_unique的一个小问题。

不知何故,输出总是在数组中留下最后一个重复项。

我从一个html形式的文本框中获取文本

$IDs = trim($_POST['IDs']);
$IDs = explode("n", $IDs);
$IDs = array_filter($IDs, 'trim');
$ID = array_unique($IDs,0);
print_r($ID);
样本输入:

012345 0123456 01234567 012345 0123456 01234567 012345 0123456 01234567样例输出:

Array ( [0] => 012345 [1] => 0123456 [2] => 01234567 [3] => 01234567 )
样本输入:

012345 0123456 01234567 012345 0123456 01234567 012345 0123456样例输出:

Array ( [0] => 012345 [1] => 0123456 [2] => 01234567 [3] => 0123456 ) 

不确定为什么最后一个副本总是被遗漏。

我肯定我错过了什么,但似乎不明白。

添加foreach循环希望修复它,但即使这样,我一直得到相同的结果。

您应该使用array_map而不是array_filter

:

$IDs = trim($_POST['IDs']);
$IDs = explode("n", $IDs);
$IDs = array_map('trim', $IDs);
$ID = array_unique($IDs,0);
print_r($ID);

我已经更正了你的数据格式,foreach()是不必要的:-

<?php
$IDs = "012345n0123456n01234567n012345n0123456n01234567n012345n0123456n01234567";
$IDs = explode("n", $IDs);
$IDs = array_unique($IDs,0);
print_r($IDs);
?>

,输出将是:

Array
(
    [0] => 012345
    [1] => 0123456
    [2] => 01234567
)

注:我也意识到array_filter是不必要的。

相关内容

  • 没有找到相关文章

最新更新