搜尋

首頁  >  問答  >  主體

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'

這樣的字串呢?

謝謝你的回答.

过去多啦不再A梦过去多啦不再A梦2724 天前604

全部回覆(2)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-06-05 11:09:46

    如果是要把連續的數字拼起來,可以直接用個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連起來了,是失誤還是你有特殊需求?

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-05 11:09:46

    雷雷

    回覆
    0
  • 取消回覆