在PHP中增加字符串值

时间:2019-06-09 00:17:34

标签: php string

我的字符串范围从随机数量的字母(从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

2 个答案:

答案 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。