Php 将数组与自身进行比较

Php 将数组与自身进行比较,php,Php,我现在有点困在如何比较这些变量之间,我有24个下拉选项,每个选项中有24个选项可供选择,然后我将它们发布到PHP页面。最简单、最有效的方法是将这些值相互比较,以检查所选的每个选项是否彼此不同,因为24个选项中没有一个是相同的。我知道数组是解决这个问题的方法,只是不确定如何比较它们。 非常感谢您的帮助 $id = $_POST[trackid]; $pos1 = $_POST[pos1]; $pos2 = $_POST[pos2]; $pos3 = $_POST[p

我现在有点困在如何比较这些变量之间,我有24个下拉选项,每个选项中有24个选项可供选择,然后我将它们发布到PHP页面。最简单、最有效的方法是将这些值相互比较,以检查所选的每个选项是否彼此不同,因为24个选项中没有一个是相同的。我知道数组是解决这个问题的方法,只是不确定如何比较它们。 非常感谢您的帮助

    $id = $_POST[trackid];
    $pos1 = $_POST[pos1];
    $pos2 = $_POST[pos2];
    $pos3 = $_POST[pos3];
    $pos4 = $_POST[pos4];
    $pos5 = $_POST[pos5];
    $pos6 = $_POST[pos6];
    $pos7 = $_POST[pos7];
    $pos8 = $_POST[pos8];
    $pos9 = $_POST[pos9];
    $pos10 = $_POST[pos10];
    $pos11 = $_POST[pos11];
    $pos12 = $_POST[pos12];
    $pos13 = $_POST[pos13];
    $pos14 = $_POST[pos14];
    $pos15 = $_POST[pos15];
    $pos16 = $_POST[pos16];
    $pos17 = $_POST[pos17];
    $pos18 = $_POST[pos18];
    $pos19 = $_POST[pos19];
    $pos20 = $_POST[pos20];
    $pos21 = $_POST[pos21];
    $pos22 = $_POST[pos22];
    $pos23 = $_POST[pos23];
    $pos24 = $_POST[pos24];

给定一个数组,您可以尝试函数

替代解决方案


有很多方法可以做到这一点,例如for循环,这取决于您的具体需要。

首先,您应该在数组索引周围添加引号,而不是使用裸字,这应该会引起警告:

$pos1 = $_POST['pos1'];
要从$\u POST中复制pos*值,应使用循环:

$pos = array();
for ($i = 1; $i <= 24; ++$i) {
  $pos["pos$i"] = $_POST["pos$i"];
}

只需在上面做一个数组。首先,您需要将这些POST变量放入一个数组中,而不是将它们拆分

$pos = array();
for ($i = 1; $i <= 24; $i++)
{
    $pos["pos$i"] = $_POST["pos$i"];
}

$unique = array_unique($pos);
if (count($unique) == 24)
{
    // all good!
}
else
{
    // bad!
}

你能说得更清楚些吗?如果没有一个是相同的,那么问题是什么


考虑到您实际上可以多次选择相同的选项,或者您只是想防止攻击,您可以将它们放入数组中,然后使用该函数

真正的问题:$post[pos{i}]是有效的PHP变量语法吗?我从来没有在任何地方看到过它的文档,我总是使用$post[pos{$I}]@Dave Err,不用了。谢谢你的关注。我在用Ruby思考。修复了PHP插值语法。
$pos = array();
for ($i = 1; $i <= 24; ++$i) {
  $pos["pos$i"] = $_POST["pos$i"];
}
if (count(array_unique($pos)) == count($pos)) {
  # pos contains no duplicates
}
$pos = array();
for ($i = 1; $i <= 24; $i++)
{
    $pos["pos$i"] = $_POST["pos$i"];
}

$unique = array_unique($pos);
if (count($unique) == 24)
{
    // all good!
}
else
{
    // bad!
}