Forum Webscript.Ru

Программирование => PHP => Тема начата: Skyer от 06 Апреля 2004, 01:52:24

Название: Проверка на отсутствие одинаковых значений.
Отправлено: Skyer от 06 Апреля 2004, 01:52:24
Есть, скажем, 100 переменных($a, $b, $c...$z). Все значения вводятся пользователем через форму. Как сделать так, чтобы если значения двух или более переменных окажутся одинаковыми, выводилось сообщение "Так нельзя"?
Название: Проверка на отсутствие одинаковых значений.
Отправлено: Макс от 06 Апреля 2004, 02:03:37
Skyer
если эти 100 переменных и есть вся форма (я имею ввиду что в форме нет других полей, на которые не распространяется это ограничение) то  например
if (array_unique($_POST) != $_POST)  {
  echo "есть дубликаты";
}

если, кроме этих 100 переменных есть еще и другие поля, то их надо в массив объединить
Название: Проверка на отсутствие одинаковых значений.
Отправлено: Skyer от 06 Апреля 2004, 02:05:33
Да, другие поля есть.

Цитировать
то их надо в массив объединить

То есть, тот код, что ты написал, только вместо "$_POST" имя массива?
Название: Проверка на отсутствие одинаковых значений.
Отправлено: Макс от 06 Апреля 2004, 02:07:33
Цитировать
Skyer:
То есть, тот код, что ты написал, только вместо "$_POST" имя массива?

да. Ты вообще понял, что код делает ?
Название: Проверка на отсутствие одинаковых значений.
Отправлено: Skyer от 06 Апреля 2004, 02:11:59
Макс
Я так понимаю, что array_unique проверяет, все ли значения элементов массива разные, и если это так, выводит TRUE, иначе - FALSE.
Спасибо! This shit works!:)
Название: Проверка на отсутствие одинаковых значений.
Отправлено: Макс от 06 Апреля 2004, 02:21:26
Skyer
нет.
[p]array_unique[/p] возвращает переданный ей массив без дубликатов.
Например

$a = array(1, 2, 3, 4, 5, 1);
$a = array_unique($a);
print_r($a);
выдаст Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

если в массиве все значения были уникальны, то функция вернет массив, равный переданому. Что мы и проверяем в условии.
Название: Проверка на отсутствие одинаковых значений.
Отправлено: Skyer от 06 Апреля 2004, 02:24:53
Макс
Теперь стало понятно. Спасибо!