检查PHP变量是否包含唯一值

时间:2011-04-19 13:47:32

标签: php

我有20个变量,每个变量都有1到10000之间的数字。

是否有一种简单的方法可以检查所有变量是否包含唯一值,如果没有将用户发送出去。

例如,

if($var1,$var2,$var3...etc are not unique)
{
location wherever.php
exit;
}

前端应该阻止用户两次提交相同的值,但我需要检查它。

谢谢:)

6 个答案:

答案 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