<?php
$numbers = $_POST['number'] ?? [];
$numbers = is_array($numbers)
? array_filter($numbers, 'ctype_digit')
: [];
$numbers = array_unique($numbers);
var_dump($numbers);
Длинная форма:
if(isset($_POST['number']))
{
$numbers = $_POST['number'];
} else {
$numbers = [];
}
if(is_array($numbers)) {
$numbers = array_filter($numbers, 'ctype_digit');
} else {
$numbers = [];
}
$numbers = array_unique($numbers);
В длинной версии мы можем использовать троичный оператор для сокращения if else:
$numbers = isset($_POST['number']) ? $_POST['number'] : [];
Мы можем заключить этот контракт ещес помощью оператора объединения нулей:
$numbers = $_POST['number'] ?? [];
Если вы хотите убедиться, что из вашей формы передан только массив целых чисел (или, точнее, целых чисел в строках), вы можете отфильтровать массив.
$numbers = array_filter($numbers, 'ctype_digit');
Примечание. Вы не можете доверять пользовательскому вводу.