【发布时间】:2018-05-25 08:14:26
【问题描述】:
我从一个表中获取了这个 ID:
“B0AL02087”
如何将此字母数字 id 转换为整数表示?我期待“B0AL02087”类似于“2011202087”。
我找到了一种方法,使用带有字符串拆分的字母范围,字母表中字母的索引会切换键中的字母:
$alphabet = range('A', 'Z');
$arr = str_split("B0AL02087");
$arr[0] = array_search($arr[0], $alphabet);
$arr[2] = array_search($arr[2], $alphabet);
$arr[3] = array_search($arr[3], $alphabet);
implode($arr), '0');
但是这种方法只有在你指定 $arr 的索引时才有效,这意味着当表中 id 的格式发生变化时它不起作用,例如
“BBAL02087”
现在我们在字符串的开头有两个字母,而不是像第一个字母那样是一个字母和一个整数。我可以写一堆 if 语句检查每个索引是否包含一个数字。我只是不确定是否有更好的方法来做到这一点。
【问题讨论】:
-
是否将其转换为二进制工作?这将是一个完整的数字表示,并且是可逆的.. stackoverflow.com/questions/6382738/…
-
代替 数字 的 void 规范,也许说明目的,这样人们就不必蒙着眼睛射飞镖。
-
你可以使用
ord()来获取每个字母的ascii整数值。 -
您要将其转换为数字的目的是什么?
-
这个要求的最终解决方案是将数字从 36 进制转换为十进制(10 进制)。这将避免碰撞。
标签: php