PHP: упорядоченный список верхнего альфа-стиля - PullRequest
0 голосов
/ 31 января 2012

Я хотел бы иметь возможность выводить букву так же, как упорядоченные списки верхнего альфа в 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?Я думаю, что код, показанный на этой странице , может быть полезен, но я не уверен, как заставить его делать то, что я хочу.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Зачем беспокоиться с $ letter_counter = 2; (как число) и просто укажите последнюю букву, которую вы хотите.

Что-то вроде этого может быть интересно, хотя:

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

(Вы знали, что можете увеличивать как строки, так и числа, не так ли?)

1 голос
/ 31 января 2012

Попробуйте следующую функцию, она просто преобразует десятичную цифру в основание вашей буквы (= основание 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)имена) или аналогичные, эта функция может быть лучше подходит для того, что вы хотите.

...