muf*_*fin 13 php arrays insert arraylist array-merge
我正在尝试规范化一串以逗号分隔的数字和一个范围.展示:
数组:
$array = ["1","2","5-10","15-20"];
Run Code Online (Sandbox Code Playgroud)
应成为:
$array = [1,2,5,6,7,8,9,10,15,16,17,18,19,20];
Run Code Online (Sandbox Code Playgroud)
我正在研究的算法是:
//get the array values with a range in it :
$rangeArray = preg_grep('[-]',$array);
Run Code Online (Sandbox Code Playgroud)
这将包含["5-10", "16-20"];Then:
foreach($rangeArray as $index=>$value){
$rangeVal = explode('-',$value);
$convertedArray = range($rangeVal[0],$rangeVal[1]);
}
Run Code Online (Sandbox Code Playgroud)
转换后的数组现在包含["5","6","7","8","9","10"] ;
我现在面临的问题是,如何在原始数组中弹出值"5-10",并在$ convertedArray中插入值,以便我将获得值:
$ array = ["1","2","5","6","7","8","9","10","16-20"];
那么,如何将数组插入数组?或者有更清洁的方法来解决这类问题吗?将数字和范围值的数组转换为正确排序的数字数组?
干得好。我试图尽量减少代码。
考虑下面的初始数组,
$array = ["1","2","5-10","15-20"];
Run Code Online (Sandbox Code Playgroud)
如果您要根据它创建一个新数组$array,请在第一次出现的位置下方更改$array为所需的任何名称,
$array = call_user_func_array('array_merge', array_map(function($value) {
if(1 == count($explode = explode('-', $value, 2))) {
return [(int)$value];
}
return range((int)$explode[0], (int)$explode[1]);
}, $array));
Run Code Online (Sandbox Code Playgroud)
现在,$array成为
$array = [1,2,5,6,7,8,9,10,15,16,17,18,19,20];
Run Code Online (Sandbox Code Playgroud)
笔记:
15-20-25提供,则15-20考虑并忽略其余部分15a-20b提供,则视为15-20,这是用爆炸后将其转换为整数的结果-,15a变为150试试这个:
<?php
$array = ["1","2","5-10","15-20"];
$newdata = array();
foreach($array as $data){
if(strpos($data,'-')){
$range = explode('-', $data);
for($i=$range[0];$i<=$range[1];$i++){
array_push($newdata, $i);
}
}
else{
array_push($newdata, (int)$data);
}
}
echo "<pre>";
print_r($array);
echo "</pre>";
echo "<pre>";
print_r($newdata);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)
结果:
Array
(
[0] => 1
[1] => 2
[2] => 5-10
[3] => 15-20
)
Array
(
[0] => 1
[1] => 2
[2] => 5
[3] => 6
[4] => 7
[5] => 8
[6] => 9
[7] => 10
[8] => 15
[9] => 16
[10] => 17
[11] => 18
[12] => 19
[13] => 20
)
Run Code Online (Sandbox Code Playgroud)
问题解决了!
| 归档时间: |
|
| 查看次数: |
12392 次 |
| 最近记录: |