【PHP】アルファベット記号を用いた26進数を生成する。

Excelの列番号を取得したくてやった時のメモ。

function getColKey($target) {
	for($i = 0; $i < 26; $i++){
		$alphabet[] = strtoupper(chr(ord('a') + $i));
	}
	$one = fmod($target, 26);
	$result = $alphabet[$one];
	$carry = ($target - $one) / 26;
	while($carry != 0) {
		$one = fmod($carry - 1, 26);
		$result = $alphabet[$one].$result;
		$carry = ($carry - 1 - $one) / 26;
	}
	return $result;
}

関数に数値を渡せばその番号目の列キーが帰ってくる。

下記例。

echo getColKey(24)."\n";
echo getColKey(235)."\n";
echo getColKey(2146)."\n";
echo getColKey(13461)."\n";

↓

Y
IB
CDO
SWT