如题
有 php 数组
[1,2,4,5,6,7,9,11]
[7,11,16,17,18,33,102,103,555]
优雅的转换为
'1,2,4-7,9,11'
'7,11,16-18,33,102-103,555'
这样的字符串呢?
谢谢你的回答.
如题
有 php 数组
[1,2,4,5,6,7,9,11]
[7,11,16,17,18,33,102,103,555]
优雅的转换为
'1,2,4-7,9,11'
'7,11,16-18,33,102-103,555'
这样的字符串呢?
谢谢你的回答.
$a1=array(1,2,3,5,6,10,15,28,89,90,91,92,93);
$count=count($a1);
foreach ($a1 as $key => $value) {
if(empty($a2)){
$a2['min']=$value;
$a2['max']=$value;
}else{
if(($value-$a2['max']==1)&&($key<>$count-1)){
$a2['max']=$value;
}else{
if($a2['min']==$a2['max']){
$a3[]=$a2['min'];
}else{
$a3[]=$a2['min'].'-'.$a2['max'];
}
$a2['min']=$value;
$a2['max']=$value;
}
}
}
echo '<pre>';var_dump($a3);
10 回答11.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答719 阅读✓ 已解决
2 回答2.3k 阅读
如果是要把连续的数字拼起来,可以直接用个array_reduce计算结果再用implode拼接成字符串。
不过我看不懂你的规律,你第一个例子里1和2没有连起来,第二个例子102和103连起来了,是失误还是你有特殊需求?