2011-04-19 124 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重定向客戶端