如題
有 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連起來了,是失誤還是你有特殊需求?
雷雷
如果是要把連續的數字拼起來,可以直接用個array_reduce計算結果再用implode拼接成字串。
不過我看不懂你的規律,你第一個例子裡1和2沒有連起來,第二個例子102和103連起來了,是失誤還是你有特殊需求?
雷雷