PHP 在数字逻辑中设置最少 4 位数字
Posted
技术标签:
【中文标题】PHP 在数字逻辑中设置最少 4 位数字【英文标题】:PHP set minimum 4 digits in a number logic 【发布时间】:2015-08-15 02:46:43 【问题描述】:我是 php 新手,我正在尝试在变量中设置最少 4 位数字并创建一个 memberid。
$memberidVal = ABC0123;
$numMemberVal = preg_replace("/[^0-9]/", "", $memberidVal);
if (strlen($numMemberVal) == 3)
$numMemberVal = 0 . $numMemberVal;
elseif (strlen($numMemberVal) == 2)
$numMemberVal = 00 . $numMemberVal;
elseif (strlen($numMemberVal) == 1)
$numMemberVal = 000 . $numMemberVal;
$newMemberId = "ABC" . ($numMemberVal + 1);
echo ($newMemberId);
无论我做什么,我总是得到 ABC124 作为回报。
【问题讨论】:
【参考方案1】:$newMemberId = "ABC" . ($numMemberVal + 1);
上面一行做了以下事情:
-
获取数字字符串
0123
并添加小数点1
得到124
感谢type juggling
然后它在前面加上“ABC”,因为你告诉它
如果您想强制使用前导零,请使用str_pad()
:
$memberidVal = ABC0123;
$numMemberVal = preg_replace("/[^0-9]/", "", $memberidVal);
$newMemberId = "ABC" . str_pad(($numMemberVal + 1), 4, '0', STR_PAD_LEFT);
或者在添加零之前添加1
:
$memberidVal = ABC0123;
$numMemberVal = preg_replace("/[^0-9]/", "", $memberidVal);
$numMemberVal++;
if (strlen($numMemberVal) == 3)
$numMemberVal = 0 . $numMemberVal;
elseif (strlen($numMemberVal) == 2)
$numMemberVal = 00 . $numMemberVal;
elseif (strlen($numMemberVal) == 1)
$numMemberVal = 000 . $numMemberVal;
$newMemberId = "ABC" . $numMemberVal;
echo ($newMemberId);
或使用sprintf()
:
$memberidVal = ABC0123;
$numMemberVal = preg_replace("/[^0-9]/", "", $memberidVal);
$newMemberId = sprintf('%s%04d', 'ABC', ($numMemberVal + 1));
【讨论】:
谢谢约翰。这就说得通了。如果数字的长度超过 4 会发生什么?将来是否必须更改以下带有数字 4 的示例? $newMemberId = "ABC" 。 str_pad(($numMemberVal + 1), 4, '0', STR_PAD_LEFT); 我想我已经回答了我自己的问题。我确实遵循了您的 sprintf() 示例,如果变量字符串的长度为 4 及以上,则它不会在前面附加零。我使用 sprintf() 示例对 ABC12345 + 1 进行了测试,它返回给我 ABC12347。 :)以上是关于PHP 在数字逻辑中设置最少 4 位数字的主要内容,如果未能解决你的问题,请参考以下文章