将字符串拆分为较小的字符串,而不是数组


Split a string into smaller strings and not arrays

需要一些帮助来解决字符串拆分的小问题。

我试着把一个序列号一分为二,在下半部分做一些计算,然后把它接回到上半部分。我的问题是后半部分从两个零开始,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>";
}

非常感谢您的帮助。

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

如果字符串总是4个字符长,则可以使用str_pad

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

字符串是数组字符,因此您可以通过迭代它们的长度来获得它们的每个字符

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)

这样,如果你想构建完全不同的字符串,你可以跳过字符串中你想要的任何字符。或者在在中间添加字符。