我认为应该很容易,但我不能以任何方式做到这一点,我找不到相关的信息。
我有一些PHP字符串:
$a = "yellow";
$b = "green";
$c = "blue";
$d = "black";
$e = "blue";
我需要获得像ID一样使用的唯一整数值。像这样:
$a = 31;
$b = 52;
$c = 11;
$d = 43;
$e = 11;
我尝试使用ord
,但只获得第一个字符,然后在我的示例中blue
和black
不起作用。
使用md5我得到数字和字符。我需要一个整数。
echo md5("blue"); // this returns 48d6215903dff56238e52e8891380c8f
echo ord("blue"); // this returns 98
echo ord("back"); // this returns 98
答案 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
)