将数组与自身进行比较

时间:2011-09-15 15:25:47

标签: php

我目前有点陷入困境,想知道如何将这些变量与彼此进行比较,我有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];

4 个答案:

答案 0 :(得分:2)

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

count($original_array) != count(array_unique($original_array))

使用array_count_values

的替代解决方案
count(array_count_values($original_array)) = count($original_array)

有很多方法可以做到这一点(例如for循环),它只取决于你的确切需求。

答案 1 :(得分:1)

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

$pos1 = $_POST['pos1'];

要从pos*复制$_POST值,您应该使用循环:

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

要确保没有重复项,请使用array_unique并查看两个数组是否具有相同的长度:

if (count(array_unique($pos)) == count($pos)) {
  # pos contains no duplicates
}

答案 2 :(得分:0)

只需对其执行array_unique。首先,您需要将这些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!
}

答案 3 :(得分:0)

你可以更明确吗?如果它们中没有一个可以是相同的,那么问题是什么?

考虑到您实际上可以多次选择相同的选项,或者您只想保护免受攻击,而不是将它们放入数组中,然后使用array_unique函数。