Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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_Numbers_Zero - Fatal编程技术网

PHP在单个数字前加上前导零,动态

PHP在单个数字前加上前导零,动态,php,string,numbers,zero,Php,String,Numbers,Zero,PHP—是否有一种快速、动态的方法来测试单个字符串,然后在前导零之前加上前缀 例如: $year = 11; $month = 4; $stamp = $year.add_single_zero_if_needed($month); // Imaginary function echo $stamp; // 1104 您可以使用添加0 str_pad($month, 2, '0', STR_PAD_LEFT); string str\u pad(string$input,int$pa

PHP—是否有一种快速、动态的方法来测试单个字符串,然后在前导零之前加上前缀

例如:

$year = 11;
$month = 4;

$stamp = $year.add_single_zero_if_needed($month);  // Imaginary function

echo $stamp; // 1104
您可以使用添加0

str_pad($month, 2, '0', STR_PAD_LEFT); 
string str\u pad(string$input,int$pad\u length[,string$pad\u string=”“[,int$pad\u type=str\u pad\u RIGHT]])
您可以使用sprintf:


如果零小于所需的字符数,它将只添加零

编辑:正如@FelipeAls所指出的那样:

使用数字时,应使用
%d
(而不是
%s
),尤其是在可能出现负数的情况下。如果您只使用正数,则任何一个选项都可以

例如:

sprintf(“%04s”,10)返回0010
sprintf(“%04s”,-10)返回0-10

其中:

sprintf(“%04d”,10)返回0010

sprintf(“%04d”,-10)
返回-010

字符串格式化的通用工具,
sprintf

$stamp = sprintf('%s%02s', $year, $month);

经过测试,sprintf()有点更好:它有一个公共语言格式,不使用类常量,等等。这里是纯金@ZZllalani-实际上,如果仔细查看Kirk Beard答案中的示例,它会保存到一个变量:)这不适用于负数的负数软件(这里的日期显然没有问题!:)
%03s
可以输出
0-5
,其中
%03d
可以输出
-05
这不适用于负片numbers@RafikBari我已经更新了我的答案,包括@FelipeAls提到的信息。如果您使用
%02d
,负数可以很好地处理。您的编辑是错误的,sprintf(“%04s”,10);返回0010,而不是1000。同时返回sprintf(“%04d”,-10);返回-010。在PHP5.5.18str_pad上测试,可读性更强。我喜欢把事情简单化。SaveTFF是一个很好的函数,当它在字符串的中间必须有一个变量时,我会用到它很多,但是对于这样的事情,我将使用StrpPad()。而我只处理正整数。它们不需要任何花哨的东西;或者,您也可以使用str_pad:str_pad($value,8,'0',str_pad_LEFT);有符号的数字呢?str_replace(“00”,“0”,sprintf(“%03d”,$num))
$stamp = sprintf('%s%02s', $year, $month);