如果字符串的长度未知或变化,如何使用sprintf将字符串前置为零

时间:2014-08-25 11:54:11

标签: php printf

我需要在字符串之前添加零,该字符串本质上是一个数字但可以是任何长度。如果字符串的长度可以变化,如何使用sprintf来实现此目的。

以下是我正在处理的代码

// $SKU is the array containing skus which has both numeric and alpha numeric values.
// I want to add zero only before those which starts with a number.

foreach ( $SKU as $key ) {
    $sku_first_char = $key[0]; // get the first character of the string. 

    if( is_numeric( $sku_first_char) ) { //if it is a number
        $num_padded = sprintf("CODE HERE"); //prepend it with a zero
    }
    echo $num_padded. '</br>';
}

2 个答案:

答案 0 :(得分:0)

foreach ( $SKU as $key ) {
    $sku_first_char = $key[0]; // get the first character of the string. 

    if( is_numeric( $sku_first_char) ) { //if it is a number
        $key = "0" . $key; //prepend it with a zero
    }
    echo $key. '';
}

不需要sprintf

答案 1 :(得分:0)

只是为了它的地狱:

$num = sprintf(sprintf('%%0%dd', strlen($num) + 1), $num);

这使用sprintf0的数字填充到特定长度,通过sprintf表达式将长度动态设置为比数字长度多一个

是的,这完全没有意义;只需将0直接添加到数字中就是您真正想要的:

printf('0%d', $num)
'0' . $num
"0$num"