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

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

仅当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

我想将前导零添加到变量中,以获得一个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);

丑陋

你可以这样做:

$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;
工作


有效吗?

是的,很好的解决方案。你是对的,我没有太多的变量,所以两者都很好。我用另一个看起来很棒的解决方案对我的问题进行了编辑(如果添加另一个函数不是太难看;))是的,很好的解决方案。你是对的,我没有太多的变量,所以两者都很好。我用另一个似乎很棒的解决方案对我的问题进行了编辑(如果添加另一个函数不是太难看;)