我有多个变量。我想检查一个变量是否可以与另一个变量相同。这是我的代码,你能帮我把它简化吗?
<?php
$a = $_POST["a"];
$b = $_POST["b"];
$c = $_POST["c"];
$d = $_POST["d"];
if ($a == $b || $a == $c || $a == $d || $b == $c || $b == $d || $c == $d) {
echo "variable cannot be same";
} else {
echo "good";
}
?>
发布于 2019-03-29 23:31:05
与从POST数组中提取变量不同,您只需从它们所在的位置使用它们。
使用值来计算数组中每个值的数量。
然后使用比较删除所有计数1,意思是唯一的。
如果数组中还剩一些东西,那么就会有重复的。
if(array_diff(array_count_values($_POST), [1])){
echo "variable cannot be same";
}else{
echo "good";
}
如果需要,可以在这里测试代码:https://3v4l.org/l15P0
正如我对另一个答案所评论的那样,array_unique速度很慢。
两种方法的比较显示出显着性差异。
发布于 2019-03-29 22:24:52
我会将所有值放入数组中,使用array_unique
删除重复值,并比较它们的大小:
$orig = array($a, $b, $c, $d);
$uniq = array_unique($orig);
if (count($orig) != count($uniq)) {
echo "variable cannot be same";
} else {
echo "good";
}
https://stackoverflow.com/questions/55428759
复制