【发布时间】:2018-11-01 15:54:21
【问题描述】:
我一直无法找到解决 PHP 中整数到字符串转换这一方面的问题,所以...
我有一个文件,其中一个字段包含一些长度为 3、4 或 5 位的数字
我需要将所有数字标准化为 4 位。
如果数字是 123、1234、12345,那么为了标准化,我在第一个后面添加一个零,对第二个不做任何事情,对第三个进行舍入:round(12345/10)
到目前为止,一切都很好。问题是该文件包含一些带有重要前导零的数字 023、0234、02346。
我需要保留前导零,我希望输出为 0230、0234、0235
我想我可以强制该字段为字符串,如果第一个字符为零,则删除它,对剩余的数字进行计算,然后将数字左填充为带有前导零的字符串
当我尝试将带有前导零的数字转换为字符串时,该问题的前导零似乎被解释为指示该数字是八进制的。
strval(0123) > 83
(字符串)0123 > 83
我的任务是通过编辑源数据文件来用散列替换任何前导零,这样该字段就变成了一个字符串。然后我的过程变成:如果该字段以#strip it开头,则进行计算,然后在前面加上一个零。当然有更好的解决方案,也许是另一种读取文件的方法?我正在使用 fgetcsv
【问题讨论】:
-
您需要向我们展示您使用的代码没有按照您希望的方式运行。
-
我没有看到问题。当我从文件中读取数字字符串时,它会转换为整数 ok -
$x = '0123'; var_dump((int)$x);->123。我看不到在你的情况下八进制表示发生在哪里。请向我们展示代码。 -
将 12345 更改为 1235 进行格式化听起来不正确。我希望这些不是重要的数字。