我在PHP中有系统,我必须插入一个必须喜欢的数字
PO_ACC_00001,PO_ACC_00002,PO_ACC_00003.PO_ACC_00004 and so on
这将被插入数据库以供进一步参考,“PO和ACC”是动态前缀,它们可以根据要求而不同
现在我主要担心的是如何增加00001系列并保留数字中的5位数系列?
答案 0 :(得分:2)
您可以使用简单的正则表达式从字符串中获取数字,然后您有一个简单的整数。
增加数字后,您可以使用
之类的内容轻松对其进行格式化$cucc=sprintf('PO_ACC_%05d', $number);
答案 1 :(得分:2)
>> $a = "PO_ACC_00001";
>> echo ++$a;
'PO_ACC_00002'
答案 2 :(得分:0)
创建辅助函数和位或错误检查。
/**
* Takes in parameter of format PO_ACC_XXXXX (where XXXXX is a 5
* digit integer) and increment it by one
* @param string $po
* @return string
*/
function increment($po)
{
if (strlen($po) != 12 || substr($po, 0, 7) != 'PO_ACC_')
return 'Incorrect format error: ' . $po;
$num = substr($po, -5);
// strip leading zero
$num = ltrim($num,'0');
if (!is_numeric($num))
return 'Incorrect format error. Last 5 digits need to be an integer: ' . $po;
return ++$po;
}
echo increment('PO_ACC_00999');
答案 3 :(得分:0)
Sprintf
在这种情况下非常有用,因此,我建议在the documentation中阅读更多内容。
<?php
$num_of_ids = 10000; //Number of "ids" to generate.
$i = 0; //Loop counter.
$n = 0; //"id" number piece.
$l = "PO_ACC_"; //"id" letter piece.
while ($i <= $num_of_ids) {
$id = $l . sprintf("%05d", $n); //Create "id". Sprintf pads the number to make it 4 digits.
echo $id . "<br>"; //Print out the id.
$i++; $n++; //Letters can be incremented the same as numbers.
}
?>