2011-12-17 34 views
2

或者我正在做別的事情。爲什麼在array_unshift之後array_unique不工作?

<?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 

我懷疑有可能是EOL或LF標誌在$fileData。如果是這種情況,是否有簡單的方法來刪除它們?

回答

3

file()返回的數組中的字符串在結尾處有新的行字符,使它們不等於不是的字符串。你可以告訴file()不加FILE_IGNORE_NEW_LINES作爲第二個參數包含這些字符:

file('something.txt', FILE_IGNORE_NEW_LINES); 
+2

很容易發現這些類型的問題,如果你的用戶'的var_dump()'和瀏覽器的查看源代碼功能(而不是' print_r()呈現爲HTML)。 – 2011-12-17 18:08:24