仅当存在php时才添加前导零

时间:2012-03-21 13:52:32

标签: php string

我想将前导零添加到变量中以获取6位数字符串。 我用这个代码

 echo str_pad( $var, 6, '0', STR_PAD_LEFT ) . str_pad( $var2, 6, '0', STR_PAD_LEFT );

没关系,但如果$ var或$ var2为空,结果为 000000

如果$ var或$ var2不存在,str_pad的结果对我来说必须为空

我可以用

if( $var ){
    $test1 = str_pad( $var, 6, '0', STR_PAD_LEFT );
}
if( $var2 ){
    $test1 .= str_pad( $var2, 6, '0', STR_PAD_LEFT );
}
echo $test1;

我只是想知道该代码是否可以更干净或更简单。

感谢。

编辑:我尝试了另一种解决方案:

function addZero( $number, $length ){
    if( !$number ){ return false; }
    return str_pad( $number, $length, '0', STR_PAD_LEFT);
}

只是

echo addZero( $var, 6) . addZero( $var2, 5);
丑陋?

4 个答案:

答案 0 :(得分:1)

嗯,你可以这样做:

$result = "";
$result .= $var  ? str_pad( $var, 6, '0', STR_PAD_LEFT ) : null;
$result .= $var2 ? str_pad( $var2, 6, '0', STR_PAD_LEFT ) : null;

实际上只是写得更紧凑(它确实始终定义$result)。我绝对不会建议尝试使代码略微缩短,但代价是更难以阅读。

如果您要处理未知或已知但数量众多的变量,那么将会有更好的解决方案。但只有两个,像这样的硬编码很好。

答案 1 :(得分:0)

如果var为空,你可以在str_pad()调用中填充三元运算来替换零长度,但它有点难看。在每个str_pad()调用中,如果变量不为空,则表达式!empty($var) ? 6 : 0将提供填充长度为6,如果为空,则表示为0,导致空变量没有输出。

echo str_pad($var1, (!empty($var1) ? 6 : 0), '0', STR_PAD_LEFT ) . str_pad($var2, (!empty($var2) ? 6 : 0), '0', STR_PAD_LEFT);

$var1 = "ok";
$var2 = "";
// $var2 excluded
// 0000ok

答案 2 :(得分:0)

您可以使用三元形式。 (条件)? (true返回值):( false返回值),稍微清理代码。所以你的代码变成了:

$test1 = ($var ? str_pad( $var, 6, '0', STR_PAD_LEFT ) : '');
$test1 .= ($var2 ? str_pad( $var2, 6, '0', STR_PAD_LEFT ) : '');
echo $test1;

答案 3 :(得分:0)

echo str_pad( $var  ?: '', 6, '0', STR_PAD_LEFT ) 
   . str_pad( $var2 ?: '', 6, '0', STR_PAD_LEFT );

作品?