あまり効率的ではありませんが、仕事を成し遂げます:
function get_character_number($end)
{
$count = 1;
$char = 'A';
$end = strtoupper($end);
while ($char !== $end) {
$count++;
$char++;
}
return $count;
}
echo get_character_number('AA'); // 27
デモ
これが機能するのは、のようなものを取得する$char = 'A'
と$char++
、「B」、「C」、「D」、…「Z」、「AA」、「AB」などに変更されるためです。
時間が長くなるほど、これは遅くなることに注意してください$end
。'ZZZZ'(475254反復)を超える場合、またはそのような多くのルックアップが必要な場合は、これをお勧めしません。
より良いパフォーマンスの代替案は
function get_character_number($string) {
$number = 0;
$string = strtoupper($string);
$dictionary = array_combine(range('A', 'Z'), range(1, 26));
for ($pos = 0; isset($string[$pos]); $pos++) {
$number += $dictionary[$string[$pos]] + $pos * 26 - $pos;
}
return $number;
}
echo get_character_number(''), PHP_EOL; // 0
echo get_character_number('Z'), PHP_EOL; // 26
echo get_character_number('AA'), PHP_EOL; // 27
デモ