如何用PHP将字符串主键"B0AL02087"转为数字表示?
解决字母数字ID转整数数字的问题
你已经找对了核心思路!我们可以把这个手动替换的方式改成通用的自动处理逻辑,不管字母在ID的哪个位置都能轻松转换,完美匹配你想要的结果。
完整实现代码(PHP)
$targetId = "B0AL02087"; $alphabet = range('A', 'Z'); $charArray = str_split($targetId); $finalNumber = ''; foreach ($charArray as $char) { // 先统一转大写,兼容可能的小写字母输入 $upperChar = strtoupper($char); if (ctype_alpha($upperChar)) { // 字母表索引从0开始,所以要+1得到A=1、B=2的对应关系 $letterPosition = array_search($upperChar, $alphabet) + 1; $finalNumber .= $letterPosition; } else { // 数字直接保留 $finalNumber .= $char; } } echo $finalNumber; // 输出:2011202087
逻辑解释
- 用
range('A', 'Z')生成A到Z的字母数组,方便快速查找字母位置 - 把ID拆成单个字符逐个处理,不用手动指定每个字母的索引位置
- 对每个字符判断:如果是字母,就找到它在字母表中的位置(索引+1,因为A对应1而不是数组默认的0);如果是数字直接拼接
- 额外加了
strtoupper()处理,即使输入有小写字母也能正确转换
这样处理后,你的示例ID B0AL02087 会被拆解为:
- B → 2
- 0 → 0
- A → 1
- L → 12
- 0 → 0
- 2 → 2
- 0 → 0
- 8 → 8
- 7 → 7
拼接起来正好是你预期的 2011202087。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

