我的字符串范围从随机数量的字母(从0到大于10)开始,以数字结尾:
示例1:S001,S002,...,S015
示例2:AB67116,AB67117,...,AB67128
示例3:G07,G08,G09,G10,G11
如果只给我一个开始和一个结束,如何在数组中生成所有它们?
例如从ZS11到ZS15,我需要一个具有ZS11,ZS12,ZS13,ZS14,ZS15的数组
已经尝试:
for ($i = $start; $i <= $end; $i++) {
//code here
}
,其中$ start是起始字符串,$ end是最后一个字符串
编辑:从S1到S10停在S1
答案 0 :(得分:1)
您必须考虑
代码
function generateCode($starting_code, $end_code)
{
preg_match_all('/([a-zA-Z]+|[0-9]+)/', $starting_code, $arr_start);
preg_match_all('/([a-zA-Z]+|[0-9]+)/', $end_code, $arr_end);
$generated = [];
$start = $arr_start[0][1];
$end = $arr_end[0][1];
$string_code = $arr_start[0][0];
if (!is_numeric($start) || !is_numeric($end)) {
return "Invalid Imput!\n";
}
$len = strlen($start);
for ($index = $start; $index <= $end; $index++) {
$code_number = str_pad($index, $len, "0", STR_PAD_LEFT);;
$generated[] = (string)$string_code . $code_number;
}
return $generated;
}
使用
$starting_code = "ZA11";
$end_code = "ZA15";
$codes = generateCode($starting_code, $end_code);
print_r($codes);
结果
Array
(
[0] => S01
[1] => S02
[2] => S03
[3] => S04
[4] => S05
[5] => S06
[6] => S07
[7] => S08
[8] => S09
[9] => S10
)
答案 1 :(得分:0)
编辑问题后,意识到为什么不能将其与简单的“ for”一起使用。
字符串必须具有相同的长度才能工作,请假装我。
在数据集中,它是S01至S10,而不是S1至S10。