php 数组 如何将 1,2,4,5,6,7,9,11 优雅的转换为 '1,2,4-7,9,11' 这样的字符串呢?

查看:134
本文介绍了php 数组 如何将 1,2,4,5,6,7,9,11 优雅的转换为 '1,2,4-7,9,11' 这样的字符串呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

如题

有 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'

这样的字符串呢?

谢谢你的回答.

解决方案

如果是要把连续的数字拼起来,可以直接用个array_reduce计算结果再用implode拼接成字符串。

function array_hyphens($arr){
    return implode(',',array_reduce($arr,function($a,$num){
        if(!($len=count($a))) return array($num);
        @list($s,$e) =explode('-',$a[--$len]);
        if($s==$num-1 || (isset($e) && $e==$num-1)) $a[$len]=implode('-',array($s,$num));
        else array_push($a,$num);
        return $a;
    },array()));
}
echo array_hyphens([7,11,16,17,18,33,102,103,555]);
// 7,11,16-18,33,102-103,555

不过我看不懂你的规律,你第一个例子里1和2没有连起来,第二个例子102和103连起来了,是失误还是你有特殊需求?

这篇关于php 数组 如何将 1,2,4,5,6,7,9,11 优雅的转换为 '1,2,4-7,9,11' 这样的字符串呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆