PHP-使用array_unique()从数组中删除重复项

PHP-使用array_unique()从数组中删除重复项,php,html,array-unique,Php,Html,Array Unique,以前有过关于这个话题的讨论,但我没有从他们那里得到任何一个例子在我的案例中起作用。希望这是一个简单的解决方案,可以帮助其他有类似问题的人 我有一个html表单,它将一系列5个数字作为一个数组。我只想打印没有任何副本的数字。我正试图使用array\u unique()来实现这一点 表格: <p>Enter a series of numbers. Any duplicates will be removed, then displayed on the screen.</p&

以前有过关于这个话题的讨论,但我没有从他们那里得到任何一个例子在我的案例中起作用。希望这是一个简单的解决方案,可以帮助其他有类似问题的人

我有一个html表单,它将一系列5个数字作为一个数组。我只想打印没有任何副本的数字。我正试图使用
array\u unique()
来实现这一点

表格:

<p>Enter a series of numbers.  Any duplicates will be removed, then 
displayed on the screen.</p>
<form action="rDuplicate.php" method="post">
Number 1: <input type="number" name="number[]"><br>
Number 2: <input type="number" name="number[]"><br>
Number 3: <input type="number" name="number[]"><br>
Number 4: <input type="number" name="number[]"><br>
Number 5: <input type="number" name="number[]"><br>
<input type="submit">
</form>
在长期版本中,我们可以使用三元运算符来收缩if-else:

$numbers = isset($_POST['number']) ? $_POST['number'] : [];
我们可以与空合并运算符进一步约定:

$numbers = $_POST['number'] ?? [];
如果要确保只从表单传递整数数组(更准确地说是字符串中的整数),可以筛选数组

$numbers = array_filter($numbers, 'ctype_digit');

注意:您不能信任用户输入。

注意那些维度
array\u unique($values['number'))
谢谢!这确实有效。你能解释一下在?之后的代码中发生了什么吗<代码>??无效
?数组_唯一($number):[]例如。我刚开始使用php,不知道这些部分在做什么。@Justiciar,我稍微修改了代码以包含一个输入过滤器,以确保最终得到一个整数数组或空数组。并添加了代码的长格式。
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);   
$numbers = isset($_POST['number']) ? $_POST['number'] : [];
$numbers = $_POST['number'] ?? [];
$numbers = array_filter($numbers, 'ctype_digit');