извлекать повторяющиеся значения из массива - PullRequest
1 голос
/ 12 декабря 2011

У меня есть текстовое поле, в котором пользователи могут ввести строку из 15 цифр только в строке, максимум 50 строк

Мне также нужно отфильтровать дубликаты значений. пока у меня есть этот код

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)

есть идеи?

1 Ответ

1 голос
/ 12 декабря 2011

Итак, как отмечалось в комментариях, вам нужно вырезать \n s в каждой строке.

Это можно сделать с помощью:

trim($text_field);

Тогда вам нужно оставить правильно отформатированную строку, которую можно добавить в массив.

Или вы можете сделать однострочник, который предложил другой Джон:

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

Я добавил функцию array_unique для всего, чтобы гарантировать, что результатом будут только уникальные значения.

...