Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果任何$u POST等于另一个$u POST die(';error';);?_Php_Javascript_Jquery - Fatal编程技术网

Php 如果任何$u POST等于另一个$u POST die(';error';);?

Php 如果任何$u POST等于另一个$u POST die(';error';);?,php,javascript,jquery,Php,Javascript,Jquery,我正在尝试将此表格发送至: 如果任何$\u POST变量等于任何其他$\u POST变量,则抛出一个错误 如果只是几个,那就不是问题了,但我有大约20个 所以如果我想这么做,我就得像 <?php if($_POST['input1']==$_POST['input2'] || $_POST['input1']==$_POST['input3']){ die('whatever'); } ?> 但这并不是一个好的编码(这将花费很长时间) 我想到了数组和

我正在尝试将此表格发送至:

如果任何$\u POST变量等于任何其他$\u POST变量,则抛出一个错误

如果只是几个,那就不是问题了,但我有大约20个 所以如果我想这么做,我就得像

    <?php 
    if($_POST['input1']==$_POST['input2'] || $_POST['input1']==$_POST['input3']){
die('whatever');
}

    ?>

但这并不是一个好的编码(这将花费很长时间) 我想到了数组和不同的方法

但是我已经脑死亡了,所以我想我可以得到一些帮助。。 提前谢谢


ps在PHP(服务器端)中这样做很好,但Jquery始终是一个选项。

使用删除重复值,并检查它是否仍然等于您的数组:

if($_POST != array_unique($_POST))
    die("...");

不太好,但是我想说你必须在一个双循环中完成它;虽然它是O(n^2),但在实践中不会有问题

foreach($_POST as $keya=>$vala) {
    foreach($_POST as $keyb => $valb) {
        if($vala == $valb && $keya != $keyb) {
            die('whatever');
        }
    }
}
如果($\u POST==($\u POST)){}

您可以执行以下操作:

$count_array = array_count_values($_POST);
foreach($_POST as $post) {
  if($count_array[$post] >1 ) {
    die();
 }
}
这只是一个答案。更有效的实施办法是:

$post = array_value($_POST);
$count = count($post);
for ($i = 0; $i < $count; ++$i) {
    for ($j = $i + 1; $j < $count; ++$j) {
        if ($post[$i] == $post[$j]) {
            die();
        }
    }
}
$post=array\u值($\u post);
$count=count($post);
对于($i=0;$i<$count;++$i){
对于($j=$i+1;$j<$count;++$j){
如果($post[$i]==$post[$j]){
模具();
}
}
}

这将保存所有的多重检查。所以它的结果是O(2*n)而不是O(n^2)(如果我把O的东西弄对的话)。虽然我不知道额外的
array\u值会降低多少速度

这是我的最终代码。。。所以基本上我把我想要的放进一个数组中

学分将归@akellehe,因为他的分数与我的最终成绩最接近

效果很好

$titles=array();
        $num=1;
        while($num!=15){
        $set1='title'.$num;
        $set2=$_REQUEST["title$num"];
        $titles[$set1]=$set2;
        unset($set1);
        unset($set2);
        $num+=1;
        }
        foreach($titles as $d => $p){
            foreach($titles as $e =>$q){
            if($p==$q && $d!=$e){
            if(!empty($p)){
            $_SESSION['error']='Duplicates not allowed!';
            }
            }
            }
        }

顺便说一句,die(“一些搞糟的消息”)不是处理错误的方法。@Hanse仍然比//TODO:fix meI只是以die为例更好。。。我很少使用die。@Hanse:你对处理错误消息有什么看法?我喜欢它的外观。。。。所以我可以像你一样使用它??或者如果($\u POST['a']!=array\u unique($\u POST)),我必须做什么?我将给出一个警告,函数在执行===操作之前将每个元素强制转换为字符串。这只适用于post变量,但如果您随意进入其他具有强制类型或特殊格式的数组,则可能会遇到一些问题。ok非常有用。。。只有一个问题。。。。我忘了有些是一样的。。。。。有什么建议吗??。。。a$post_a=$post['a'];未设置($_POST['a']);然后在检查工作完成后将其设置回去??您仍然可以执行
array_diff($\u POST,array_unique($\u POST))
并检查重复键。同样,执行
$duplicatesArray=array_键(array_diff($\u POST,array_unique($\u POST))
检查这些值,如果它们在您的黑名单上,那么您将调用die()方法。
[array_unique][1] ($\u POST)
do?还没有看到这种语法。哦,我明白了为什么这篇文章被写成
[array\u unique][1]($\u POST)
[array\u unique][1]
应该是一个链接,但萨弗雷斯编辑了这篇文章并弄乱了格式。
$post = array_value($_POST);
$count = count($post);
for ($i = 0; $i < $count; ++$i) {
    for ($j = $i + 1; $j < $count; ++$j) {
        if ($post[$i] == $post[$j]) {
            die();
        }
    }
}
$titles=array();
        $num=1;
        while($num!=15){
        $set1='title'.$num;
        $set2=$_REQUEST["title$num"];
        $titles[$set1]=$set2;
        unset($set1);
        unset($set2);
        $num+=1;
        }
        foreach($titles as $d => $p){
            foreach($titles as $e =>$q){
            if($p==$q && $d!=$e){
            if(!empty($p)){
            $_SESSION['error']='Duplicates not allowed!';
            }
            }
            }
        }