2017-06-17 50 views
0

我需要从数据库ID生成一个不唯一的哈希,我需要设置一个参数,生成的哈希不大于x。从低于X的ID生成整数散列?

实施例:

ID:12312452

不大于5

十字脚是20。现在我可以使用do-while来总和数字。总和是2

但是,如果我走54674567,该crossfoot是44,并在结束它的8 ......

我需要这个功能对于动态文本。我有一个元描述的数组(例如5个描述),并且在每个页面上(一个带有id的数据库记录),函数必须选择一个描述。我不想将描述保存在数据库中。

+2

退房模运算符,它可能是你在找什么,'44%5 = 4'。 '任何正整数%x'都会比'x'小 – beardhatcode

+0

谢谢!我用'x = 5'尝试了一些数字,但结果通常是'0','2'或'3'。它不够动态。 – poldixd

回答

0

好吧,这里是我的解决方案:

$numbers = [ 
    45384, 
    44638, 
    28213, 
    43498, 
    21170, 
    30211 
]; 

$max = 8; 

foreach ($numbers as $key => $value) { 
    var_dump(array_sum(str_split(crc32($value))) % $max); 
} 

结果:

int(6) 
int(1) 
int(4) 
int(1) 
int(4) 
int(4)