Q
號與邏輯順序字母
2
A
回答
3
它的速度較慢這樣計算它,但你可以採取的事實,即PHP可以讓你以同樣的方式爲數字遞增字母,Perl的風格:
function excelColumnRange($number) {
$character = 'A';
while ($number > 1) {
++$character;
--$number;
}
return $character;
}
var_dump(excelColumnRange(2));
var_dump(excelColumnRange(29));
1
這裏是你正在尋找的代碼爲:
<?php
$start = "A";
$max = 50;
$result = array();
for($i=1; $i<=$max; $i++) {
$result[$i] = $start++;
}
print_r($result);
?>
編號:http://www.xpertdeveloper.com/2011/01/php-strings-unusual-behaviour/
1
這應該爲你工作:
即使沒有任何循環。首先,我計算字母(26)進入數字的次數。有了這個,我定義了它的次數爲str_repleat()
A.然後我簡單地減去這個數字,然後用剩下的數字計算出字母表中的數字。
<?php
function numberToLetter($number) {
$fullSets = (($num = floor(($number-1)/26)) < 0 ? 0 : $num);
return str_repeat("A", $fullSets) . (($v = ($number-$fullSets*26)) > 0 ? chr($v+64) : "");
}
echo numberToLetter(53);
?>
輸出:
AAA
這是不是你實際使用還是你猜,我用Excel?因爲如果你這樣做,我正在使用excel,並且給我留下了深刻的印象。 – Loko
@Loko - 與我實際使用的類似,但作爲PHPExcel的作者,我做了很多這類事情..... PHPExcel本身使用公式,並緩存計算出的性能值;但我確實在這個方法上使用了一個變體來迭代列的範圍 –
'但作爲PHPExcel'的作者無法得到更真實的:) –