Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将带前导零的数字转换为字符串_Php_String_Integer - Fatal编程技术网

PHP将带前导零的数字转换为字符串

PHP将带前导零的数字转换为字符串,php,string,integer,Php,String,Integer,我找不到一个能解决PHP中整数到字符串转换这一方面的问题,所以… 我有一个文件,其中一个字段包含一些长度为3、4或5位的数字 我需要将所有数字标准化为4位。 如果数字是123、1234、12345,那么为了标准化,我在第一个数字后面加一个零,第二个数字不加任何处理,第三个数字四舍五入:四舍五入(12345/10) 到现在为止,一直都还不错。问题在于,该文件包含一些具有有效前导零023、0234、02346的数字。 我需要保留前导零,我希望输出是023002340235 我想我可以强制该字段成为一

我找不到一个能解决PHP中整数到字符串转换这一方面的问题,所以…
我有一个文件,其中一个字段包含一些长度为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'
给出正确的数字。