2015-08-15 61 views
0

我是PHP新手,我試圖在變量中設置最小4位數字並創建成員ID。PHP在數字邏輯中設置了最少4位數

$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); 

上面一行是做了以下內容:

  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)); 
+0

感謝約翰。這就說得通了。如果數字長度超過4,會發生什麼?以後會不會改變下面的4號例子? $ newMemberId =「ABC」。 str_pad(($ numMemberVal + 1),4,'0',STR_PAD_LEFT); – Ray

+0

我想我回答了我自己的問題。我確實按照你的sprintf()例子,如果變量字符串長度爲4或更大,它不會在前面追加0。我用sprintf()例子測試了ABC12345 + 1,它返回給我ABC12347。 :) – Ray