zoukankan      html  css  js  c++  java
  • PHP 数字序数&字母序数 相互转化

    数从1开始  即 A=1  而非 A=0

     1 <?php
     2 
     3 /**
     4  * 数字序列转字母序列
     5  * @param $int
     6  * @return bool|mixed|string
     7  */
     8 function int_to_chr($int)
     9 {
    10   if (!is_int($int) || $int <= 0) return false;
    11 
    12   $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');
    13 
    14   if ($int > 26) {
    15     $_count_times = floor($int / 26);
    16     $_left_int = $int - $_count_times * 26;
    17     if ($_left_int > 0) $chr = $array[$_left_int - 1];
    18     else  $chr = $array[25];//26倍数时,尾数为Z
    19 
    20     if ($_count_times > 26) {
    21       if ($_left_int > 0) {
    22         $chr = int_to_chr((int)$_count_times) . $chr;
    23       } else {
    24         $chr = int_to_chr((int)($_count_times - 1)) . $chr;
    25       }
    26     } else if ($_count_times <= 26 && $_count_times > 0) {
    27       if ($_left_int > 0) {
    28         $chr = $array[$_count_times - 1] . $chr;
    29       } else {
    30         if ($_count_times > 1) $chr = $array[$_count_times - 2] . $chr;
    31       }
    32     }
    33   } else {
    34     $chr = $array[$int - 1];
    35   }
    36 
    37   return $chr;
    38 }
    39 
    40 
    41 /**
    42  * 字母序列转数字序列
    43  * @param $char
    44  * @return int|bool
    45  */
    46 function chr_to_int($char)
    47 {
    48   //检测字符串是否全字母
    49   $regex = '/^[a-zA-Z]+$/i';
    50 
    51   if (!preg_match($regex, $char)) return false;
    52 
    53   $int = 0;
    54   $char = strtoupper($char);
    55   $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');
    56   $len = strlen($char);
    57   for ($i = 0; $i < $len; $i++) {
    58     $index = array_search($char[$i], $array);
    59     $int += ($index + 1) * pow(26, $len - $i - 1);
    60   }
    61   return $int;
    62 }
    63 
    64 echo '8848:', int_to_chr(8848), '<br>';
    65 echo 'MBH:', chr_to_int('MBH'), '<br>';
  • 相关阅读:
    小程序 循环遍历 传参数 获取参数的方法
    小程序技巧 盒子布局
    小程序的初体验
    python制作网易云免费下载器
    数据结构实验报告之三元组顺序存储的稀疏矩阵练习(代码版)
    JavaFX作业8
    用JavaFX显示一个转动的风扇
    用JavaFX模拟一个交通信号灯
    数据结构作业周三必交
    大数据的就业观与考研观
  • 原文地址:https://www.cnblogs.com/PHPcoder404/p/9635706.html
Copyright © 2011-2022 走看看