Archives by date

You are browsing the site archives by date.

【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

 

【PHP】全アルファベット文字列をスマートに取得する方法。

配列として取得するやーつー。

for($i = 0; $i < 26; $i++){
	$alphabet[] = chr(ord('a') + $i);
}

大文字で取得したければ下記のようにすればOK

for($i = 0; $i < 26; $i++){
	$alphabet[] = strtoupper(chr(ord('a') + $i));
}

ord()は指定した文字列をASCII値にしてくれる関数。これにより開始ASCII値を求める。あとはアルファベッドの記号数分ループし、都度chr()で文字列に戻すという感じ。