PHP比较变量

时间:2013-09-02 20:46:55

标签: php variables post

我从投票表格发送了很多变量。我想检查并确保表单上没有两个值相等。我怎么能这样做?

<?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)???

3 个答案:

答案 0 :(得分:4)

您可以使用构造

轻松确定是否有任何数组包含重复值
if (count($array) === count(array_unique($array))) {
    // contains duplicates
}

对于任何数组都是如此,包括$_POST。因此,如果您想确保所有15个字段加上名称和ID相互之间是唯一的,请将$_POST替换为$array以上,您就可以了。

您可能需要记住以下几点:

  1. 如果某些表单元素可能会留空并且您可以允许多个空白字段,则需要在进行重复检查之前将其从数组中删除。这可以通过(只有一种可能的方式)来完成:

    $array = array_filter($array, function($i) { return strlen($i); });
    
  2. 如果您只想在表单元素的子集中查找重复项,那么最后续的方法是使该子集成为它自己的数组。您可以让PHP通过naming the form input elements appropriately自动为您执行此操作。

  3. 与唯一性概念相关的是函数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)