The function "range" is very useful to get an array of characters as range('C','R') does.
At work, I had to extend the function range($a,$b) to work in this special case: with two uppercase strings $a and $b, it should return all the possible strings between $a and $b.
This could be used for example to get the excel column indexes.
e.g. <?php range('A','AD') ==> array('A','B','C',...,'Z','AA','AB','AC','AD') ?>
So I wrote the function getrange($min,$max) that exactly does this.
<?php
function getcolumnrange($min,$max){
$pointer=strtoupper($min);
$output=array();
while(positionalcomparison($pointer,strtoupper($max))<=0){
array_push($output,$pointer);
$pointer++;
}
return $output;
}
function positionalcomparison($a,$b){
$a1=stringtointvalue($a); $b1=stringtointvalue($b);
if($a1>$b1)return 1;
else if($a1<$b1)return -1;
else return 0;
}
function stringtointvalue($str){
$amount=0;
$strarra=array_reverse(str_split($str));
for($i=0;$i<strlen($str);$i++){
$amount+=(ord($strarra[$i])-64)*pow(26,$i);
}
return $amount;
}
?>