我有这个数字,目前将数字与字母相连:
1-26 = A-Z
但还有更多,27 = AA和28 = AB等...
所以基本上当我这样做时:
var_dump($array[2]); //shows B
var_dump($array[29]); //shows AC
现在这个阵列我自己做了,但它变得太长了。有没有办法真正实现这一点,直到我们说32?我知道有chr但我不认为我可以使用它。
有没有一种更简单的方法来实际获得这个而不使用太长的数组?
答案 0 :(得分:3)
以这种方式计算它的速度较慢,但你可以利用PHP允许你以与数字相同的方式增加字母的事实,Perl风格:
login
答案 1 :(得分: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/
答案 2 :(得分:1)
这应该适合你:
即使没有任何循环。首先,我计算字母表(26)进入数字的次数。有了这个,我定义它到str_repleat()
A的次数。然后我简单地减去这个数字并用剩下的数字计算字母表中的数字。
/* Load some data from binary file */
template <typename T>
int deSerializeFromBinaryFile( const char* filename, int& sizeOfDataType,
T& someValue, vector<T>& someVector )
{
ifstream file( filename, ios::in | ios::binary );
if ( file.is_open() )
{
boost::archive::text_iarchive ia(file);
ia & sizeOfDataType;
ia & someValue;
ia & someVector;
file.close();
return 0;
} else {
return 1;
}
}
输出:
<?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);
?>