需要一些小问题的字符串拆分。
我正在尝试将序列号分成两部分,在后半部分进行一些计算并将其连接到上半部分。我的问题是下半场以两个零开始,PHP删除前导零。
我认为将变量保持为字符串会保留零,但我似乎无法找到将序列号拆分为较小字符串的方法,我尝试将所有方法拆分为数组。这是我的代码的一部分;
$info1 = nkw549blc003i00021; //this is the serial number.
我想将$info1
分成;
$number1 = nkw549blc003i0
$number2 = 0021
然后在for loop
上使用$number2
$num = 1;
for ($num=1; $num < $unitsquantity[$key] ; $num++) {
$sum = $number2+$num;
$final=$number1.$sum;
echo "$final<br>";
}
非常感谢任何帮助。
答案 0 :(得分:1)
$info1 = 'nkw549blc003i00021';
$number1 = substr($info1, 0, -4);
$number2 = sprintf('%1$04d', substr($info1, -4, 4));
答案 1 :(得分:1)
如果字符串总是4个字符长,则可以使用str_pad
for ($num=1; $num < $unitsquantity[$key] ; $num++) {
echo $number1 . str_pad($number2+$num, 4, '0', STR_PAD_LEFT);
}
答案 2 :(得分: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)
这样,如果要构建完全不同的字符串,可以跳过所需字符串中的任何字符。或者在中间添加字符。