PHP:Ordered List upper-alpha Style

时间:2012-01-30 22:37:47

标签: php html-lists

我希望能够以与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".

?>

它应该可以无限期地继续下去。 &#34; get_letter&#34;的代码是什么?功能看起来像?我认为this page上显示的代码可能会有所帮助,但我不确定如何让它做我想做的事。

谢谢!

2 个答案:

答案 0 :(得分:2)

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

这样的事情可能会引起人们的兴趣:

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

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

答案 1 :(得分:1)

尝试以下函数,它只是将十进制转换为字母基数(=基数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列名称)或类似内容,此功能可能更适合做您想要的。