array_unique在 PHP 中无法按预期工作



这里有个问题。我正在按数组中的换行符分解字符列表。并在其上做独特的数组。但它没有按预期工作。下面是代码:

$list = "test
ok
test
test
ok
ok
test";
$list_explode = explode("n", $list); //exploding the characters of the list from the input
//displaying unique 
array_map('trim', $list_explode);
$result = array_unique($list_explode);
print_r($result);

结果是

Array ( [0] => test [1] => ok [6] => test )

使用var_dump而不是print_r,你会看到"test"之间存在差异(看看代码板)。

您的代码包含rn作为换行符,并且您在 n 处拆分,因此除了最后一个条目之外r在所有条目中仍然存在。

您已经在使用 array_map 来防止这种情况,但忘记在后一个代码中使用 retun-value(它通过引用不起作用)。 将该行更改为:

$list_explode = array_map('trim', $list_explode);

完成此操作后,您将获得所需的内容(再次在CodePad上查看)。

您没有考虑到字符串具有换行符的一系列rn。在爆炸中,您只删除了n部分,因此您的结果实际外观为:

Array ( [0] => testr [1] => ok [6] => test )

但是,r不会打印为可见字符(即使代码可以看到它)。

您可以通过两种主要方式拆分多行文本:

  1. 使用$list_explode = array_map('rtrim', explode("n", $list));

  2. 使用$list_explode = preg_split("/r?n/", $list);

相关内容

  • 没有找到相关文章

最新更新