Найти равные значения в массиве
Как сократить код на php в проверке значений в массиве
<?
$deget = array();
$deget[0] = $_GET['input-0'];
$deget[1] = $_GET['input-1'];
$deget[2] = $_GET['input-2'];
$deget[3] = $_GET['input-3'];
$deget[4] = $_GET['input-4'];
$deget[5] = $_GET['input-5'];
$deget[6] = $_GET['input-6'];
$deget[7] = $_GET['input-7'];
$deget[8] = $_GET['input-8'];
$deget[9] = $_GET['input-9'];
$deget[10] = $_GET['input-10'];
$deget[11] = $_GET['input-11'];
$deget[12] = $_GET['input-12'];
$deget[13] = $_GET['input-13'];
$deget[14] = $_GET['input-14'];
$deget[15] = $_GET['input-15'];
$deget[16] = $_GET['input-16'];
$deget[17] = $_GET['input-17'];
$deget[18] = $_GET['input-18'];
$deget[19] = $_GET['input-19'];
$deget[20] = $_GET['input-20'];
$deget[21] = $_GET['input-21'];
$deget[22] = $_GET['input-22'];
$deget[23] = $_GET['input-23'];
$deget[24] = $_GET['input-24'];
$deget[25] = $_GET['input-25'];
if (($deget[1] == $deget[2]) or ($deget[1] == $deget[3]) or ($deget[1] == $deget[4]) ... or ($deget[25] == $deget[24]))
?>
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
- Вместо извращения в виде
input-0/input-1/input-2...input-Nна форме надо сделать инпуты с именемinput[]тогда все значения полетят в один массив с именемinputи лежать будет по единственному ключу$_GET['input'] - Далее с этим работать очень просто:
- Применить array_count_values для подсчёта дубликатов в массиве.
- Пробежаться по этому массиву циклом
foreachи если хотя бы одно значение будет больше 1, значит дубликаты имеются
Автор решения: Color kat
→ Ссылка
Заполнение массива можно сократить с помощью простого цикла.
А найти повторы можно так.
array_unique() - создаст массив с уникальными элементами из массива.
Если кол-во уникальных меньше, чем кол-во всех элементов, то значит, что есть дубликаты
<?php
$deget = [];
for($i=0; $i<=25; $i++) {
$deget[$i] = $_GET["input-$i"];
}
if(count(array_unique($deget)) < count($deget)) {
// Array has dublicates
}