2014-04-30 97 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); 
}