0

PHPスクリプトを使用して自動インクリメンタルコードを生成しています。シーケンスは次のようになります、L001L002 .... L039L040。以下は私が書いたPHPコードです。コメントは、各ステートメントの出力を示しています。

<?php

require_once("db_handler.php");

$conn = iniCon();
$db = selectDB($conn);

$query = "SELECT LID FROM locations ORDER BY LID DESC LIMIT 1";
$result = mysql_query($query, $conn);
$row = mysql_fetch_array($result);
$last_id = $row['LID'];   //L040

$id_letter = substr($last_id, 0, 1);  //L
$id_num = substr($last_id, 1) + 1;   //040 + 1
$new_id = $id_letter . $id_num;

mysql_close($conn);

?>

$new_idHTMLテキストボックスにを表示しています。この時点まではすべて正常に機能しますが、新しく生成されたコードはL41と表示され、先行ゼロが切り捨てられます。

どうすればこれを防ぐことができますか?私はそのゼロを前面に置く必要があります。

ありがとうございました。

4

3 に答える 3

3

str_padまたはsprintf関数のいずれかを使用します。

$id_num = str_pad($id_num, 3, "0", STR_PAD_LEFT);

また

$id_num = sprintf("%03d", $id_num);
于 2012-06-27T08:27:27.970 に答える
2
$id_num = substr($last_id, 1) + 1;   //40 + 1

$id_num = str_pad($id_num, 3, "0", STR_PAD_LEFT); //return 041

$new_id = $id_letter . $id_num;   
于 2012-06-27T08:25:39.190 に答える
0

sprintf[1]を見てください。ヒント:%03d

[1] http://br2.php.net/sprintf

于 2012-06-27T08:26:21.913 に答える