Проверьте, содержат ли переменные PHP уникальные значения

#php

#php

Вопрос:

У меня есть 20 переменных, каждая из которых содержит число от 1 до 10000.

Есть ли простой способ проверить, что все переменные содержат уникальное значение, и, если нет, отправить пользователя прочь.

например,

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

Интерфейс должен препятствовать тому, чтобы пользователь отправлял одно и то же значение дважды, однако мне нужно это проверить.

Спасибо 🙂

Ответ №1:

 $data   = array( /* your numbers */);
$unique = array_unique($data);

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

Вы также можете сравнить эти массивы вместо подсчета их элементов:

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

Ответ №2:

Поместите значения в массив.

Передайте массив в функцию php

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

Если массив, возвращаемый функцией, меньше, чем входные данные, значит, были найдены неуникальные ключи.

Ответ №3:

 $arr = array($var1, $var2 ... );
$arr2 = array_unique($arr);

if(count($arr) != count($arr2)){
   // send location;
}
  

Ответ №4:

я бы создал функцию, которая использует 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 для перенаправления клиента

Ответ №5:

Было бы очень просто, если бы переменная находилась в массиве.

 $var[1] = 590;
$var[2] = 614;
  

и т.д. и т.п.

Затем вы можете сделать:

 foreach ($var as $a_key => $a){
     foreach($var as $b_key => $b){
      if($a==$b amp;amp; $a_key != $b_key){
         //Do whatever you want to do. 
      }
     }
}
  

Этот метод позволит вам выполнять функцию для каждой совпадающей пары или в качестве ответа на каждую совпадающую пару.

Ответ №6:

Поместите каждую из переменных в массив $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