PHP:有序列表上层alpha样式


PHP: Ordered List upper-alpha Style

我希望能够以与HTML中上层字母顺序列表相同的方式输出字母。例如:

<?php
    $letter_counter = 1;
    echo get_letter($letter_counter);
    // Output should be "A".
    $letter_counter = 2;
    echo get_letter($letter_counter);
    // Output should be "B".
    $letter_counter = 26;
    echo get_letter($letter_counter);
    // Output should be "Z".
    $letter_counter = 27;
    echo get_letter($letter_counter);
    // Output should be "AA".
    $letter_counter = 28;
    echo get_letter($letter_counter);
    // Output should be "AB".
    $letter_counter = 52;
    echo get_letter($letter_counter);
    // Output should be "AZ".
?>

它应该能够无限期地继续下去。"get_letter"函数的代码会是什么样子?我认为这个页面上显示的代码可能会有所帮助,但我不确定如何让它做我想做的事情。

谢谢!

为什么要麻烦$letter_counter=2;(作为一个数字),只需指定您想要的最后一个字母。

像这样的东西可能会引起人们的兴趣:

$letter = 'A';
$lastLetter = 'ZZZ';
$lastLetter++;
do {
    echo $letter,PHP_EOL;
} while ($letter++ !== $lastLetter);

(你知道你可以增加字符串和数字,不是吗?)

尝试以下函数,它只需将十进制转换为您的字母基数(=基数27,26个字母加0,我们阻止输出)

function get_letter($n)
{
    $n += floor($n/27); //fixes missing 0s
    //characters to be found in base_convert return string
    $convert = '123456789abcdefghijklmnopq';
    $out = '';
    foreach( str_split(base_convert($n, 10, 27)) as $char )
    {
            $out .= chr(strpos($convert, $char)+65);
    }
    return $out;
}

对于指定电子表格中的列(例如Excel列名)或类似内容,此函数可能更适合执行您想要的操作。