PHP в строку

Я знаю, что в PHP вы можете объявить переменную A, а затем, если вы увеличите ее в цикле, она будет A, B, C, .... X, Y, Z, AA, AB, AC

Есть ли какая-либо функция php для преобразования целого числа в соответствующую строку в этом формате


person brandonvvv    schedule 18.04.2012    source источник
comment
Вот как: zzzz-zzzza" title="php, как вывести список, подобный этому, aa ab ac, вплоть до zzzy zzzz zzzza"> stackoverflow.com/questions/5554369/ Называется Base26... кавычки, потому что использует A-Z как символы (что несколько необычно). Дополнительная информация: en.wikipedia.org/wiki/Hexavigesimal   -  person Tei    schedule 18.04.2012


Ответы (3)


Я начал с ответа Tor P, и я думаю, что это работает так, как хотелось бы:

function numToString($i) {
    if($i < 26) {
        return chr(65 + $i);
    } else {
        $i -= 26;
        $r = $i % 26;
        return numToString($i - $r).chr(65 + $r);
    }
}
person Prestaul    schedule 18.04.2012

Наиболее близким к этому формату является base_convert, но он использует 0- Кодировка 9A-Z.

Вы можете использовать базу 26, а затем изменить кодировку.

person Karoly Horvath    schedule 18.04.2012
comment
Это близко, но на самом деле не основание 26 ... Мне нравится идея, но я не уверен, как вы заставите ее работать. - person Prestaul; 18.04.2012
comment
Ах... Итак, вы выполняете базовое преобразование, а затем str_replace двумя массивами по 26 элементов? Это определенно сработает. - person Prestaul; 18.04.2012

используйте функцию chr с преобразованием int в код ascii (заглавные буквы идут от 65-90), поэтому 65+i, чтобы использовать i >= 26, вы должны делать по одной букве за раз

ну что-то типа этого...

function noToString($i) {
  if($i < 26) return chr(65+$i);
  else return noToString($i-26).chr(65+$i%26);
}
person Tor P    schedule 18.04.2012