Php 为什么';按预期工作
在将mysql数据导出到excel的过程中,我遇到了错误问题。 我必须变量$rowNumber和$col。我必须同时减少ti(-1)。 附加的代码适用于$rowNumber,但不适用于$col。你知道吗 结果总是:Php 为什么';按预期工作,php,Php,在将mysql数据导出到excel的过程中,我遇到了错误问题。 我必须变量$rowNumber和$col。我必须同时减少ti(-1)。 附加的代码适用于$rowNumber,但不适用于$col。你知道吗 结果总是: 182 AD 183 AE 正如您所看到的,increase对这两者都有效 <?php $rowNumber = '183'; $col = 'AD'; $rowNumber--; $col--; echo $rowNumber,' ' , $col, "\n";
182 AD
183 AE
正如您所看到的,increase对这两者都有效
<?php
$rowNumber = '183';
$col = 'AD';
$rowNumber--;
$col--;
echo $rowNumber,' ' , $col, "\n";
$rowNumber++;
$col++;
echo $rowNumber,' ' , $col, "\n";
?>
您需要将它们视为数字,并将数字提取到列中,因为我已经编写了一个方法
getNameFromNumber
您可以看到它符合您的期望
<?php
$rowNumber = 183;
$col = 29;//'AD';
function getNameFromNumber($num) {
$letter = chr(65 + $num % 26);
$num2 = intval($num / 26);
return ($num2 > 0) ? getNameFromNumber($num2 - 1) . $letter : $letter;
}
$rowNumber--;
$col--;
echo $rowNumber,' ' , getNameFromNumber($col), "\n";
$rowNumber++;
$col++;
echo $rowNumber,' ' , getNameFromNumber($col), "\n";
?>
在PHP中只能递增字符串,而不是递减可能与您的情况最相关。例如,如果列是
AQ
,该怎么办?更新我的代码使用getNameFromNumber
对于itI,请参见“AQ”将不起作用,但在我的情况下,“AC”将是有史以来最高的collumn。所以这个解决方案适合我的需要。可能现在是这样,但是当其他人出现并试图修改你的代码时会发生什么呢?@NigelRen更新的代码适用于我测试的所有情况,最多10000 cols
182 AC
183 AD