Уникальные значения без повторений PHP

Довольно часто нужно сгенерировать значения без повторений для заданного набора данных. Функции rand(), mt_rand() ,random_int() здесь не подойдут, так как велик процент повторения

Например нужно выдать уникальный номер билета студенту в группе. Сделаем тестовый массив со студентами
 
$students = [];
 
$c = 40;
 
$i = 0;
 
while ($i <= $c)
 
{
 
$students[$i]['id'] = $i;
 
$students[$i]['name'] = 'student '. $i;
 
$i++;
 
}
 
// Диапазон номеров билетов которые мы будем раздавать
 
$range = range(1, 25);
 
// Добавляем в массив номер билета
 
foreach ($students as $key => $val)
{
 
if(count($buf) == 0)
{
 
$buf = $range;
 
}
 
$rand_key = array_rand($buf);
 
$students[$key]['ticket'] = $buf[$rand_key];
 
unset($buf[$rand_key]);
 
}

Как получить уникальный значения из массива PHP

В итоге в массиве $students[key]['ticket'] мы получим уникальные номера билетов в рамках группы студентов.
 
Данную реализацию можно применить в различных ситуациях.

Поделиться с сайта feramount.ru
Поделиться
Последние работы
Комментарии

Комментарии отсутствуют