Php 将随机生成的ID分成相等的组

Php 将随机生成的ID分成相等的组,php,random,grouping,divide,Php,Random,Grouping,Divide,我正在使用php并生成用户id,就像 $id = bin2hex(openssl_random_pseudo_bytes(16, $s)); 我想把这些ID分成相等(或几乎相等)的组。将来我想知道用户属于哪个组 有什么想法吗?我可以为此选择什么标准 我发现了分辨率的一种变体。但也许还有另一种更漂亮的方式 $group = array_sum(str_split($id))%2; 好的,这是一个粗略而现成的答案;由于没有给出您希望排序的实际标准,我假设主要目标是在您选择的容器中均匀分布变量;

我正在使用php并生成用户id,就像

 $id = bin2hex(openssl_random_pseudo_bytes(16, $s));
我想把这些ID分成相等(或几乎相等)的组。将来我想知道用户属于哪个组


有什么想法吗?我可以为此选择什么标准

我发现了分辨率的一种变体。但也许还有另一种更漂亮的方式

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

好的,这是一个粗略而现成的答案;由于没有给出您希望排序的实际标准,我假设主要目标是在您选择的容器中均匀分布变量;我在这里使用了数组

<?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";
            } 
    }       
?> 


请向我们展示您迄今为止所做的尝试。我不明白你的问题。你说的平等群体是什么意思?你的预期产出是多少?给我们展示一些例子…例如,如果我在mysql中有自动递增字段,我可以做一些类似$userGroup=$id%2;它会将所有用户分成两个相等的组。关于数组块呢?恐怕那对我不起作用。如果我有一个新用户,我想知道他是否位于已经存在的第一个或第二个组中