很久以前为导出EXCEL写过一个字母累加的函数,今天追加一个数字转为字母的。也就是十进制转26进制。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
for ($i = 1; $i < 200; $i++) {
    echo $i . ' : ' . num2Letter($i) . '<br />';
}
 
function num2Letter($num) {
    $num = intval($num);
    if ($num <= 0)
        return false;
    $letterArr = 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');
    $letter = '';
    do {
        $key = ($num - 1) % 26;
        $letter = $letterArr[$key] . $letter;
        $num = floor(($num - $key) / 26);
    } while ($num > 0);
    return $letter;
}