为什么array_unique在array_unshift之后无法正常工作?

时间:2011-12-17 17:13:18

标签: php

或者我可能做错了其他事。

<?php
$date = "2011-12-31|12-31";

$fileData = file('something.txt'); // Get file contents as array
print_r($fileData);
echo "<br /><br />";

array_unshift($fileData, $date); // Add date to [0]
print_r($fileData);
echo "<br /><br />";

$cleanData = array_unique($fileData); // remove dupes
print_r($cleanData);
echo "<br /><br />";
?>

打印出:

Array ( [0] => 2011-12-31|12-31 [1] => 2011-12-30|12-30 [2] => 2011-12-29|12-29 ) 

Array ( [0] => 2011-12-31|12-31 [1] => 2011-12-31|12-31 [2] => 2011-12-30|12-30 [3] => 2011-12-29|12-29 ) 

Array ( [0] => 2011-12-31|12-31 [1] => 2011-12-31|12-31 [2] => 2011-12-30|12-30 [3] => 2011-12-29|12-29 ) 

这是something.txt:

2011-12-31|12-31
2011-12-30|12-30
2011-12-29|12-29

我怀疑$fileData中可能有eol或lf标记。如果是这种情况,是否有一种简单的方法可以删除它们?

1 个答案:

答案 0 :(得分:3)

file()返回的数组中的字符串在末尾有新的行字符,使它们不等于没有的字符串。您可以通过添加FILE_IGNORE_NEW_LINES作为第二个参数来告诉file()不要包含这些字符:

file('something.txt', FILE_IGNORE_NEW_LINES);