0

テーブル内のすべてのSKUに先行ゼロを追加しようとしています。すべてのSKUの前に3桁の数字が必要です。1〜9の場合、skusは001 $ row ['sku']、002 $ row ['sku']、009 $ row ['sku']、010 $ row ['sku']、011 $ row['sku'になります。 ]、...etc私は$n = sizeof($ row)を使用しています。しかし、これをエコーアウトするたびに、22 skus(約50個あります)を取得し、skuの最初の文字のみを返します。これを修正する方法がわかりません。クエリから配列を作成して、先行ゼロを追加するためにいくつのSKUがあるかを判断しようとしています。どんな助けでも大歓迎です。

$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

4 に答える 4

1

コンテキストを完全には理解していませんが、 str_pad関数を使用したいように聞こえます。

例えば

$num1 = str_pad(1, 3, '0', STR_PAD_LEFT); // = 001
$num2 = str_pad(10, 3, '0', STR_PAD_LEFT); // = 010
// etc...
于 2012-09-12T18:09:03.460 に答える
1

結果のデータセットを正しくループしていないか、状況を完全に理解していません。

各行のSKUに基づいて3桁の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/>";
}
于 2012-09-12T18:10:33.307 に答える
0

str_pad関数を探しています。

例:

$num = str_pad($input, 4, "0", STR_PAD_LEFT);
于 2012-09-12T18:11:06.527 に答える
0

最もエレガントな方法は、sprintf() http://php.net/manual/en/function.sprintf.phpを使用することです。

sprintf(%'0'3d=%d`<br />`, $num, $row[$i]['sku']);
于 2012-09-12T18:15:15.260 に答える