2011-12-12 54 views
1

的我有一個文本字段,用戶可以僅每行50行最大採取重複值出來的陣列

我還需要過濾掉任何重複的值輸入15個數字的字符串。到目前爲止,我有這個代碼

if(empty($_POST['text_field'])){$message = 'Please input values for the text_field.';}else{ 
    $text_field = $_POST['text_field'] ; 
    $lines_unfiltered = array_slice(explode("\n", $text_field), 0, 50); 
    $lines = array_unique($lines_unfiltered); 
    print_r($lines); 
exit; 

,但是當我用這些數字運行它,它

5645646546545 
2564545454544 
5645646546545 

它給了我所有的三線和犯規過濾掉重複像它應該

Array([0]=> 5645646546545 [1]=> 2564545454544 [2]=> 5645646546545) 

有什麼想法?

+3

你的字符串中可能會有一些額外的空白,這使得它們的比較不平等。嘗試'array_map('trim',array_slice(explode(「\ n」,$ text_field),0,50))'看看是否解決了這個問題。 – Jon

+0

我要猜測字符串的長度。嘗試使用var_dump而不是print_r。 – Nican

+1

ohhhhh我看到了問題,前兩個\ n在最後,這就是爲什麼它不匹配他最後一行。 –

回答

1

因此,正如評論指出的那樣,您需要刪除每個字符串上的\n

這可以通過做:

trim($text_field); 

,那麼你應該留下可添加到陣列中正確格式化字符串。

或者你可以做到這一點其他喬恩提出的一行代碼:

$lines = array_unique(array_map('trim', array_slice(explode("\n", $text_field), 0, 50))); 

我加入了array_unique功能周圍的一切,以確保結果是唯一的值。