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 位数字的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中设置一个通用选项以在任何地方只显示 N 位数字?

在 PHP 中设置精度

《数字逻辑电路》 作业 求解.50分/

数字电路逻辑设计摘要

1007 数字逻辑练习题

在python中设置从0,1的文件替换数字10