给定一个字符串得到一个唯一的整数值

时间:2017-12-15 13:05:45

标签: php

我认为应该很容易,但我不能以任何方式做到这一点,我找不到相关的信息。

我有一些PHP字符串:

$a = "yellow";
$b = "green";
$c = "blue";
$d = "black";
$e = "blue";

我需要获得像ID一样使用的唯一整数值​​。像这样:

$a = 31;
$b = 52;
$c = 11;
$d = 43;
$e = 11;

我尝试使用ord,但只获得第一个字符,然后在我的示例中blueblack不起作用。

使用md5我得到数字和字符。我需要一个整数。

echo md5("blue"); // this returns 48d6215903dff56238e52e8891380c8f
echo ord("blue"); // this returns 98
echo ord("back"); // this returns 98

2 个答案:

答案 0 :(得分:0)

PHP在int中存储值有限制,但String的长度不限。从理论上讲,有时总会发生碰撞。

因此,您必须将任意长度的字符串压缩为非任意长度的整数。没有数据丢失,这是不可能的。

可以使用散列算法,但它们也可以匹配。不能使用自动增量?

答案 1 :(得分:0)

如果您不关心ID是什么,可以使用来自唯一数组的索引:

$a = "yellow";
$b = "green";
$c = "blue";
$d = "black";
$e = "blue";

$values = array($a, $b, $c, $d, $e);
$indexes = array_unique($values);

// print the index for the value
echo array_search($c, $indexes); // echos out "2"


索引数组看起来像:

Array
(
    [0] => yellow
    [1] => green
    [2] => blue
    [3] => black
)