【发布时间】:2015-09-19 17:30:21
【问题描述】:
我正在尝试规范化一串逗号分隔的数字,以及一个范围。演示:
数组:
$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() 是您要求的功能,但如果您不关心条目的顺序,您也可以使用 array_merge()
-
你能举个例子说明我如何在我的情况下使用它吗?
-
我尝试了数组合并,但是我必须消除那些具有“5-10”和其他范围值的值,然后在该范围字符串的索引中插入“标准化”值。
-
将
array_splice与range()结合起来,您应该可以为所欲为。 -
检查我的编辑@muffin
标签: php arrays arraylist insert array-merge