我正在尝试向表格中的所有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 />`";
答案 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)
答案 3 :(得分:0)
最优雅的方法是使用sprintf()http://php.net/manual/en/function.sprintf.php
sprintf(%'0'3d=%d`<br />`, $num, $row[$i]['sku']);