我从投票表格发送了很多变量。我想检查并确保表单上没有两个值相等。我怎么能这样做?
<?php
$Name = $_POST['name'];
$ID = $_POST['id'];
$Topic_1 = $_POST['1'];
$Topic_2 = $_POST['2'];
$Topic_3 = $_POST['3'];
$Topic_4 = $_POST['4'];
$Topic_5 = $_POST['5'];
$Topic_6 = $_POST['6'];
$Topic_7 = $_POST['7'];
$Topic_8 = $_POST['8'];
$Topic_9 = $_POST['9'];
$Topic_10 = $_POST['10'];
$Topic_11 = $_POST['11'];
$Topic_12 = $_POST['12'];
$Topic_13 = $_POST['13'];
$Topic_14 = $_POST['14'];
$Topic_15 = $_POST['15'];
if($_POST != $_POST)???
答案 0 :(得分:4)
您可以使用构造
轻松确定是否有任何数组包含重复值if (count($array) === count(array_unique($array))) {
// contains duplicates
}
对于任何数组都是如此,包括$_POST
。因此,如果您想确保所有15个字段加上名称和ID相互之间是唯一的,请将$_POST
替换为$array
以上,您就可以了。
您可能需要记住以下几点:
如果某些表单元素可能会留空并且您可以允许多个空白字段,则需要在进行重复检查之前将其从数组中删除。这可以通过(只有一种可能的方式)来完成:
$array = array_filter($array, function($i) { return strlen($i); });
如果您只想在表单元素的子集中查找重复项,那么最后续的方法是使该子集成为它自己的数组。您可以让PHP通过naming the form input elements appropriately自动为您执行此操作。
与唯一性概念相关的是函数array_count_values
,它在类似情况下很有用(它可以告诉你有多少重复元素以及它们的值是什么)。
答案 1 :(得分:0)
$ _ POST!= $ _POST
如果相同的变量不是同一个变量,那么肯定不会起作用,导致这个测试。
你必须循环通过$ _POST数组
<?php
foreach($_POST as $key => $value) {
foreach($_POST as $subKey => $subValue) {
if($key != $subKey && $_POST[$key] == $_POST[$key])
return false;
}
}
答案 2 :(得分:0)
您正在寻找的是
$_POST['1'] = 'a';
$_POST['2'] = 'b';
$_POST['3'] = 'c';
$_POST['4'] = 'a';
$_POST['5'] = 'd';
$results = array_unique($_POST);
var_dump($results);
返回:
array
1 => string 'a' (length=1)
2 => string 'b' (length=1)
3 => string 'c' (length=1)
5 => string 'd' (length=1)