php 数字转 一二三,PHP学习之数字序数和字母序数的相互转化示例

本文分享了使用PHP进行数字序数与字母序数相互转化的代码,包括两个数字转字母的函数int_to_chr_1和int_to_chr_2,以及一个字母转数字的函数chr_to_int。这些函数对于处理基于字母的编码或排序问题非常有用。示例中展示了如何将数字8848转换为字母序数以及将字母'MBH'转换回其对应的数字序数。
摘要由CSDN通过智能技术生成

本篇文章小编将和大家分享一下如何用PHP实现数字序数和字母序数的相互转化的代码示例,具有一定的参考价值,感兴趣的朋友可以看看,希望对你有所启发。

序数从1开始 即 A=1

/**

* 数字序列转字母序列

* @param $int

* @param int $start

* @return string|bool

*/

function int_to_chr_1($int, $start = 64)

{

if (!is_int($int) || $int <= 0) return false;

$str = '';

if (floor($int / 26) > 0) {

$str .= int_to_chr_1((int)floor($int / 26));

}

return $str . chr($int % 26 + $start);

}

/**

* 数字序列转字母序列

* @param $int

* @return string|bool

*/

function int_to_chr_2($int)

{

if (!is_int($int) || $int <= 0) return false;

$array = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');

$str = '';

if ($int > 26) {

$str .= int_to_chr_2((int)floor($int / 26));

$str .= $array[$int % 26 - 1];

return $str;

} else {

return $array[$int - 1];

}

}

/**

* 字母序列转数字序列

* @param $char

* @return int|bool

*/

function chr_to_int($char)

{

//检测字符串是否全字母

$regex = '/^[a-zA-Z]+$/i';

if (!preg_match($regex, $char)) return false;

$int = 0;

$char = strtoupper($char);

$array = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');

$len = strlen($char);

for ($i = 0; $i < $len; $i++) {

$index = array_search($char[$i], $array);

$int += ($index + 1) * pow(26, $len - $i - 1);

}

return $int;

}

echo '
', int_to_chr_1(8848);

echo '
', int_to_chr_2(8848);

echo '
', chr_to_int('MBH');

相关教程:PHP视频教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值