PHP基于查询数组添加前导零

时间:2012-09-12 18:04:03

标签: php mysql

我正在尝试向表格中的所有skus添加前导零。我需要每个sku前面都有一个3位数字。对于1-9 skus将是001 $ row ['sku'],002 $ row ['sku'],009 $ row ['sku'],010 $ row ['sku'],011 $ row ['sku' ],...等我正在使用$ n = sizeof($ row)。但每当我回应这个时,我得到22个skus(大约有50个)并且只返回sku的第一个字母。我不明白如何解决这个问题,我正在尝试从我的查询中构建一个数组,以确定有多少skus,以便添加前导零。非常感谢任何帮助。

$result = mysql_query("SELECT * FROM temp_table WHERE po='ABCD'");

$row = mysql_fetch_array($result);

    for ($i=0, $n=sizeof($row); $i<$n; $i++) {
               if ($i < 9) {
                 $Zeros="00";
               }
               elseif ($i < 99) { 
                 $Zeros="0";
                }
               else{
                 $Zeros="";
                }
               $num=$i+1;    
echo   $Zeros.$num. "=" . $row[$i]['sku'] . "`<br />`";

4 个答案:

答案 0 :(得分:1)

您没有完全正确地遍历结果数据集,或者我不完全了解情况。

假设你想根据每一行的SKU构建一个三位数的SKU,这里有一个更好的方法:

// query the database
$result = mysql_query("SELECT * FROM temp_table WHERE po='ABCD'");

$count = 0;

// Loop through every row in the data result set
while ( $row = mysql_fetch_assoc( $result ) ){ 
    $count++; // Increment SKU #

    // Build integer SKU based on count of item in order and pad with zeros
    $this_sku = str_pad( $count, 3, '0', STR_PAD_LEFT);

    // Build onto integer SKU based on row data and pad with zeros
    $this_sku .= str_pad( $row['sku'], 3, '0', STR_PAD_LEFT);

    echo "This product SKU is $this_sku<br/>";
}

答案 1 :(得分:0)

我不完全理解上下文,但听起来好像你想使用str_pad函数。

e.g。

$num1 = str_pad(1, 3, '0', STR_PAD_LEFT); // = 001
$num2 = str_pad(10, 3, '0', STR_PAD_LEFT); // = 010
// etc...

答案 2 :(得分:0)

您正在寻找str_pad function

示例:

$num = str_pad($input, 4, "0", STR_PAD_LEFT);

答案 3 :(得分:0)

最优雅的方法是使用sprintf()http://php.net/manual/en/function.sprintf.php

sprintf(%'0'3d=%d`<br />`, $num, $row[$i]['sku']);