我有20个变量,每个变量都有1到10000之间的数字。
是否有一种简单的方法可以检查所有变量是否包含唯一值,如果没有将用户发送出去。
例如,
if($var1,$var2,$var3...etc are not unique)
{
location wherever.php
exit;
}
前端应该阻止用户两次提交相同的值,但我需要检查它。
谢谢:)
答案 0 :(得分:10)
$data = array( /* your numbers */);
$unique = array_unique($data);
if ( count($data) != count($unique) ) {
// not unique
}
您还可以比较那些数组而不是计算它们的元素:
if ( $data != $unique ) {
// not unique
}
答案 1 :(得分:9)
将值放在数组中。
将数组传递给php函数
array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
如果函数返回的数组小于输入,则发现非唯一键。
答案 2 :(得分:1)
$arr = array($var1, $var2 ... );
$arr2 = array_unique($arr);
if(count($arr) != count($arr2)){
// send location;
}
答案 3 :(得分:1)
我会创建一个使用array_unique()
function is_unique($array) {
if (count(array_unique($array)) < count($array)) return false;
return true;
}
然后你必须使用标题从php重定向客户端:
if (!is_unique($array)) {
header("location: whatever");
}
请注意,在任何html代码之前必须发送标头。如果你不能这样做,你必须使用javascripts window.location = url
来重定向客户端
答案 4 :(得分:0)
如果变量在数组中的位置,那将非常容易。
$var[1] = 590;
$var[2] = 614;
等等
然后你可以这样做:
foreach ($var as $a_key => $a){
foreach($var as $b_key => $b){
if($a==$b && $a_key != $b_key){
//Do whatever you want to do.
}
}
}
此方法允许您对每个匹配对执行一个函数,或者作为对每个匹配对的响应。
答案 5 :(得分:-1)
将每个变量放入数组$variables = array( $var1, $var2 , ... )
sort($variables)
$before = null;
foreach($var as $variables) {
if ($before = $var) { // $var is not unique
header("Location: whereever.php");
die();
}
$before = $var;
}
// if you reach this point, all variables were unique