2014-04-30 96 views
0

需要一點幫助,解決一個小的字符串拆分問題。將一個字符串拆分爲較小的字符串而不是數組

我想將一個序列號分成兩部分,在下半部分做一些計算並將其加入到上半部分。我的問題是下半年開始兩個零,PHP刪除了前導零。

我認爲保持變量爲字符串將保持零,但我似乎無法找到一種方法將序列號拆分爲更小的字符串,我嘗試將所有方法拆分爲數組。這是我的代碼的一部分;

$info1 = nkw549blc003i00021; //this is the serial number. 

我想將$info1分成;

$number1 = nkw549blc003i0 

$number2 = 0021 

然後$number2使用for loop

$num = 1; 
for ($num=1; $num < $unitsquantity[$key] ; $num++) { 
    $sum = $number2+$num; 
    $final=$number1.$sum; 
    echo "$final<br>"; 
} 

任何幫助是極大的讚賞。

+1

您可以隨時創建數組鍵的字符串,如果你有數組作爲你的分割操作的結果。有什麼規則來定義你如何分割序列? – Marius

+0

問題在於你正在對數字應用數學運算'+',將數字操作變成一個沒有前導零的數字。這是否在單獨的變量或數組中發生並不重要。 – deceze

回答

0

字符串是數組字符,這樣你就可以通過它們的長度迭代得到他們的每一個字符

define('SERIAL_NUM_LEN', 4); 
$info1 = 'nkw549blc003i00021'; 
$number1 = ''; $number2 = ''; 
for ($i = 0; $i < strlen($info1)-SERIAL_NUM_LEN; $i++) { 
    $number1 .= $info1[$i]; 
} 
for ($i = strlen($info1)-SERIAL_NUM_LEN; $i < strlen($info1); $i++) { 
    $number2 .= $info1[$i]; 
} 

var_dump($number1, $number2); 

輸出:

string 'nkw549blc003i0' (length=14) 

string '0021' (length=4) 

這樣,您就可以跳過從哪個字符你想要的字符串,如果你想建立完全不同的字符串。或者在中間添加字符。

1
$info1 = 'nkw549blc003i00021'; 

$number1 = substr($info1, 0, -4); 
$number2 = sprintf('%1$04d', substr($info1, -4, 4)); 
1

如果字符串將永遠是4個字符長,您可以使用str_pad

for ($num=1; $num < $unitsquantity[$key] ; $num++) { 
    echo $number1 . str_pad($number2+$num, 4, '0', STR_PAD_LEFT); 
}