Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2009, 19:22   #1
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
Смущение Функции для получения номера и названия колонок

Нужны две функции на PHP.

1) По буквенному названию, аналогичному названиям колонок в Экселе (A, B, ... AB, CDD), получает соотв. число по порядку.

Пример:
А -> 1
B -> 2
Z -> 26
AA -> 27
AF -> 32
...

2) По такому номеру получает буквенный вид колонки

1 -> A
2 -> B
26 -> Z
27 -> AA
53 -> BA
...
motorway вне форума Ответить с цитированием
Старый 21.07.2009, 21:09   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Удалось сделать, кому нужно, берите:

Код:
function colnum ($str)
{
if (strlen($str)==1)
$num=ord($str)-64;
if (strlen($str)==2)
$num=26*(ord($str{0})-64)+ord($str{1})-64;
if (strlen($str)==3)
$num=676*(ord($str{0})-64)+26*(ord($str{1})-64)+ord($str{2})-64;
return $num;
};
Код:
function numcol ($str)
{
if ($str<=26)
$col=chr(64+$str);
if ($str>26 and $str<=702)
$col=chr(floor(($str-1)/26)+64).chr($str-26*floor(($str-1)/26)+64);
if ($str>702 and $str<=16384)
{
$col=chr(floor(($str-27)/676)+64);
$str=$str-676*(ord($col)-64);
$col.=chr(floor(($str-1)/26)+64).chr($str-26*floor(($str-1)/26)+64);
};
return $col;
};
motorway вне форума Ответить с цитированием
Старый 21.07.2009, 21:43   #3
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Корявое решение. Пашет только при разрядности 3. А если будет АААА? Ленивец делал - надеюсь, это не Вы. Если хотите, могу сделать оптимизированное решение на любую разрядность и логически правильно составленное.
SkyM@n вне форума Ответить с цитированием
Старый 21.07.2009, 22:22   #4
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Ну просто в моем случае максимум это XFD. Но интересно узнать и общий алгоритм, хотя он мне вряд ли понадобится
motorway вне форума Ответить с цитированием
Старый 21.07.2009, 23:17   #5
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Цитата:
Сообщение от motorway Посмотреть сообщение
Но интересно узнать и общий алгоритм
Мне самому очень интересно - люблю такие задачки! Спасибо за задачу!
В честь их создал спецответ
SkyM@n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADllExports - программа для получения экспортируемых функций из .dll Terran Софт 4 18.05.2009 13:48
Составить подпрограмму для получения обратной матрицы Astis Паскаль, Turbo Pascal, PascalABC.NET 0 01.05.2009 18:52
Номера строк для блокнота __@cmd@__ Общие вопросы Delphi 1 02.02.2009 09:09
Получения номера страницы по выделенной ячейки brezze Microsoft Office Excel 1 11.07.2008 22:06
Delphi. Программа, которая использует системные функции для получения информации о файловой системе metamfetamin Помощь студентам 16 08.11.2007 13:24