我正在使用php并生成用户的ID,如
$id = bin2hex(openssl_random_pseudo_bytes(16, $s));
我想将这些ID分成等于(或几乎相等)的组。并且将来我想知道哪个组用户属于。
有什么想法吗?我可以选择什么标准?
答案 0 :(得分:1)
我找到了一种解决方案。但也许还有另一种更漂亮的方式......
$group = array_sum(str_split($id))%2;
答案 1 :(得分:0)
好的,这是一个粗略而准备好的答案;由于您没有给出您想要排序的实际标准,我假设主要目标是在您选择的容器中均匀分布变量;我在这里使用了数组。
<?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";
}
}
?>