我希望能够以与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列名)或类似内容,此函数可能更适合执行您想要的操作。