Разделите случайно сгенерированные идентификаторы на равные группы

я использую php и генерирую идентификатор пользователя как

 $id = bin2hex(openssl_random_pseudo_bytes(16, $s));

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

Есть идеи? Какие критерии я могу выбрать для этого?

2

Решение

Я нашел один вариант разрешения. Но, может быть, есть другой, более красивый способ …

$group = array_sum(str_split($id))%2;
1

Другие решения

ОК, это грубый и готовый ответ; поскольку фактические критерии, которые вы хотите отсортировать, не приведены, я предполагаю, что основная цель — это равномерное распределение переменных среди выбранного вами контейнера; Я использовал массивы здесь.

<?php$id1 = 'abc';
$id2 = 'def';
$id3 = 'ghi';
$id4 = 'jk';
$id5 = 'lmn';
$id6 = 'opq';
$id7 = 'rst';
$id8 = 'uvx';

$id_array = array($id1, $id2, $id3, $id4, $id5, $id6, $id7, $id8);

$array1 = array();
$array2 = array();
$array3 = array();
$array4 = array();
$id_storage = array($array1, $array2, $array3, $array4);

$id_storage_size = sizeOf($id_storage);foreach ($id_array as $indivId) {
$id_array_size = sizeOf($id_array);

$current_storage_array = $id_array_size % $id_storage_size;
$id_storage[$current_storage_array][] = $indivId;
array_shift($id_array);
}//check them like so...
echo $id_storage[1][1];?>

Что касается проверки, какой массив содержит данное значение:

<?php

$givenId = $id2;

foreach ($id_storage as $indiv_storage_array){

if (in_array($givenId, $indiv_storage_array)){
echo "Match found in $indiv_storage_array";
}
}
?>
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector