Вы получаете пользовательский ввод из одного текстового ввода.
<input type="text" name="numbers"/>
Это означает, что $_POST['numbers']
будет строкой, а не массивом, поэтому ваша unique
функция должна принимать строку.
Если вы ищете уникальные числа, вероятно, лучше сделать положительное совпадение для последовательностей цифр, а не разбивать на пробелы или что-то еще, в этом отношении.
Ваша функция довольно сложна, когда в PHP уже есть функция array_unique
. Нужно просто сопоставить числа в строке и запустить полученный массив через array_unique
. Кроме того, я бы рекомендовал не ссылаться на суперглобальный тип, например $_POST
, в такой вспомогательной функции. Если вы хотите, чтобы его можно было использовать повторно, он должен принимать входные данные в качестве аргумента, а не в зависимости от глобального значения.
Исходя из всего этого, я написал бы такую функцию:
function unique_numbers(string $input): array
{
preg_match_all('/\d+/', $input, $matches);
return array_unique($matches[0]);
}
и назовите его отправленной строкой
$numbers = unique_numbers($_POST['numbers']);