【问题标题】:PHP set minimum 4 digits in a number logicPHP 在数字逻辑中设置最少 4 位数字
【发布时间】: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 作为回报。

【问题讨论】:

    标签: php regex number-formatting


    【解决方案1】:
    $newMemberId = "ABC" . ($numMemberVal + 1);
    

    上面一行做了以下事情:

    1. 获取数字字符串0123 并添加小数点1 得到124 感谢type juggling
    2. 然后它在前面加上“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。 :)
    猜你喜欢
    • 1970-01-01
    • 2021-08-07
    • 2016-12-03
    • 1970-01-01
    • 2015-02-17
    • 2021-01-29
    • 1970-01-01
    • 2013-01-11
    • 2022-08-17
    相关资源
    最近更新 更多