我目前有点陷入困境,想知道如何将这些变量与彼此进行比较,我有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];
答案 0 :(得分:2)
给定一个数组,您可以尝试array_unique函数
count($original_array) != count(array_unique($original_array))
的替代解决方案
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函数。