PHP将带前导零的数字转换为字符串
我找不到一个能解决PHP中整数到字符串转换这一方面的问题,所以…PHP将带前导零的数字转换为字符串,php,string,integer,Php,String,Integer,我找不到一个能解决PHP中整数到字符串转换这一方面的问题,所以… 我有一个文件,其中一个字段包含一些长度为3、4或5位的数字 我需要将所有数字标准化为4位。 如果数字是123、1234、12345,那么为了标准化,我在第一个数字后面加一个零,第二个数字不加任何处理,第三个数字四舍五入:四舍五入(12345/10) 到现在为止,一直都还不错。问题在于,该文件包含一些具有有效前导零023、0234、02346的数字。 我需要保留前导零,我希望输出是023002340235 我想我可以强制该字段成为一
我有一个文件,其中一个字段包含一些长度为3、4或5位的数字 我需要将所有数字标准化为4位。
如果数字是123、1234、12345,那么为了标准化,我在第一个数字后面加一个零,第二个数字不加任何处理,第三个数字四舍五入:四舍五入(12345/10) 到现在为止,一直都还不错。问题在于,该文件包含一些具有有效前导零023、0234、02346的数字。
我需要保留前导零,我希望输出是023002340235 我想我可以强制该字段成为一个字符串,如果它是零,则删除第一个字符,对剩余的数字进行计算,然后将数字作为一个带前导零的字符串填充
问题是,当我试图将一个带前导零的数字转换为字符串时,前导零似乎被解释为表示该数字是八进制的
strval(0123)>83
(字符串)0123>83
我的任务是对源数据文件进行编辑,用散列替换任何前导零,使字段成为字符串。然后,我的过程变成:如果字段以#strip it开头,则进行计算,然后预加一个零。当然有更好的解决方案,也许是另一种读取文件的方式?我正在使用fgetcsv我会将下一个最大的数字添加到您的数字中,即1后跟0,例如 0672-->+1000 得到1672 然后,将其转换为字符串,并将位置1处的字符再次更改为零
那是我的方式。。。我对PHP非常陌生,因此可能有一个更复杂的答案,但如果其他方法都失败了,它就可以工作。您可以使用以下代码
$yourInt = 253;
$intWithZeros = sprintf("%05d", $yourInt); // result 00253
您可以在
“%05d”
中更改字符数更改值5
。您需要向我们显示您正在使用的代码没有按您希望的方式运行。我看不出问题。当我从文件中读取数字字符串时,它会转换为整数ok-$x='0123';var_dump((int)$x)代码>->123
。我不明白,在你的例子中,八进制表示法发生在哪里。请告诉我们代码。将12345更改为1235进行格式化听起来不太正确。我希望这些不是重要的数字。如果数字以前导的0
开头,则此操作将失败@我认为这里有两个独立的问题。将0
前导字符串解析为int似乎不是问题(请参见@Roman Hocke)。这个答案似乎可以用0填充来输出。@RolandStarke,不太清楚OP在问什么,但是如果输入是以00
开头的Int
,intval(00253)
将给我们171
@HamzaAbdaoui我认为输入是一个字符串,所以八进制符号00253
在这里不应该引起关注。如inval('00253')
或(int)'00253'
给出正确的数字。