仅当php存在时才添加前导零
我想将前导零添加到变量中,以获得一个6位数的字符串。 我使用这个代码仅当php存在时才添加前导零,php,string,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
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);
丑陋 你可以这样做:
$result = "";
$result .= $var ? str_pad( $var, 6, '0', STR_PAD_LEFT ) : null;
$result .= $var2 ? str_pad( $var2, 6, '0', STR_PAD_LEFT ) : null;
它实际上是一样的,只是写得更简洁一些(它确实确保始终定义$result
)。我绝对不建议以使代码更难阅读为代价使代码稍微缩短
如果您有一个未知或已知但大量的变量要处理,那么将有更好的解决方案。但对于两个人来说,像这样的硬编码很好。好吧,你可以这样做:
$result = "";
$result .= $var ? str_pad( $var, 6, '0', STR_PAD_LEFT ) : null;
$result .= $var2 ? str_pad( $var2, 6, '0', STR_PAD_LEFT ) : null;
它实际上是一样的,只是写得更简洁一些(它确实确保始终定义$result
)。我绝对不建议以使代码更难阅读为代价使代码稍微缩短
如果您有一个未知或已知但大量的变量要处理,那么将有更好的解决方案。但是对于两个人来说,像这样的硬编码是可以的。如果var为空,可以在
str_pad()
调用中填充一个三元操作来替换零长度,但这有点难看。在每个str\u pad()调用中,表达式!空($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
如果var为空,可以在str_pad()
调用中填充一个三元操作来替换零长度,但这有点难看。在每个str\u pad()调用中,表达式!空($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
你可以用三元形式。(情况)?(true返回值):(false返回值),它稍微清理代码。因此,您的代码变成:
$test1 = ($var ? str_pad( $var, 6, '0', STR_PAD_LEFT ) : '');
$test1 .= ($var2 ? str_pad( $var2, 6, '0', STR_PAD_LEFT ) : '');
echo $test1;
你可以用三元形式。(情况)?(true返回值):(false返回值),它稍微清理代码。因此,您的代码变成:
$test1 = ($var ? str_pad( $var, 6, '0', STR_PAD_LEFT ) : '');
$test1 .= ($var2 ? str_pad( $var2, 6, '0', STR_PAD_LEFT ) : '');
echo $test1;
工作
有效吗?是的,很好的解决方案。你是对的,我没有太多的变量,所以两者都很好。我用另一个看起来很棒的解决方案对我的问题进行了编辑(如果添加另一个函数不是太难看;))是的,很好的解决方案。你是对的,我没有太多的变量,所以两者都很好。我用另一个似乎很棒的解决方案对我的问题进行了编辑(如果添加另一个函数不是太难看;)