这里有个问题。我正在按数组中的换行符分解字符列表。并在其上做独特的数组。但它没有按预期工作。下面是代码:
$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
不会打印为可见字符(即使代码可以看到它)。
您可以通过两种主要方式拆分多行文本:
-
使用
$list_explode = array_map('rtrim', explode("n", $list));
-
使用
$list_explode = preg_split("/r?n/", $list);