在php中将字符串转换为唯一数值

Xeo*_*oss 3 php

我需要一个独特的内部int来代表几种随机内容类型,我不能硬编码为类常量或配置选项.然而,当我可以使用更容易理解的术语"帖子"时,我不想提及"2".因此,尽管从一个字符串中获取INT值的方法似乎对几个项目相当无冲突.

有没有办法在PHP而不是我建立的方式做到这一点?

$strings = array('post', 'comment', 'blog', 'article', 'forum', 'news', 'page');

foreach( $strings as $string ) {

    print $string . ' = ';

    $string = str_split($string);
    $sum = 0;
    foreach( $string as $char ) {
        $sum += ord($char);
    }

    var_dump( $sum );

    print '<br />';
}
Run Code Online (Sandbox Code Playgroud)

这与用户输入无关,因此不必担心设计中存在明显的缺陷.

:编辑:

我需要一个数字索引来存储在数据库中以便快速查找.即从"文章"或"新闻"中讲述"帖子".但是我不知道那些1-8类型的内容会被调用,所以我不能在应用程序中将它们硬编码为常量.因此,我能想到的最好的方法是创建每个单词的数字版本(这意味着要检查以确保两个单词不能总结为相同的数字).

如果这是一个超过8个单词的系统,那么这种方法注定要失败,并且总和碰撞的概率很高.此外,如果我可以选择知道将使用哪些单词,那么这也将是一个糟糕的设计,因为类常量会更好.

rye*_*guy 11

你可以使用crc32,这是一个简单的函数,只返回一个4字节的整数.