我尝试将一串数字以及带有连字符的数字(作为范围表达式)归一化/扩展/水合/翻译,使之成为整数值的数组。
示例输入:
$array = ["1","2","5-10","15-20"];
应该变成:
$array = [1,2,5,6,7,8,9,10,15,16,17,18,19,20];
我正在研究的算法是:
//get the array values with a range in it :
$rangeArray = preg_grep('[-]',$array);
这里将包含["5-10", "16-20"];
然后:
foreach($rangeArray as $index=>$value){
$rangeVal = explode('-',$value);
$convertedArray = range($rangeVal[0],$rangeVal[1]);
}
转换后的数组现在将包含["5","6","7","8","9","10"];
我现在面临的问题是,如何从原始数组中弹出值"5-10",并将这些值插入到$convertedArray中,以便我拥有以下值:
$array = ["1","2",**"5","6","7","8","9","10"**,"16-20"];
我该如何在范围字符串的位置插入一个或多个值?或者有没有更简洁的方法将由数字和范围值组成的数组转换为正确顺序的数字数组?
array_splice
与range()
结合使用,你就可以实现你想要的功能。 - Andrei