2011-04-19 125 views
2

我有20个变量,各持1和10000检查PHP变量保存唯一值

之间的数字有没有检查所有的变量拥有唯一值的简单方法,如果没有发送用户离开了。

例如,

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

前端应防止用户提交相同值的两倍,但是我需要检查它。

谢谢:)

回答

9

将值放入数组中。

阵列传递给PHP函数

array array_unique (array $array [, int $sort_flags = SORT_STRING ]) 

如果由该函数返回的数组越小则输入那么它发现的非独特密钥。

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. 
     } 
    } 
} 

这种方法将允许您在每个匹配对执行功能,或者作为每个匹配对的响应。

-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 
10
$data = array(/* your numbers */); 
$unique = array_unique($data); 

if (count($data) != count($unique)) { 
    // not unique 
} 

您也可以比较数组来代替计算它们的元素:

if ($data != $unique) { 
    // not unique 
} 
1
$arr = array($var1, $var2 ...); 
$arr2 = array_unique($arr); 

if(count($arr) != count($arr2)){ 
    // send location; 
} 
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重定向客户端