下記のような整数配列を範囲形式の文字列に変換したいです。
php
1//例 2$int_array = array(1, 4, 5, 6, 10, 18, 19, 20, 22); 3echo intArray2RangeString($int_array); 4//結果 : 1,4-6,10,18-20,22
自作でこのような関数を作成しました。
php
1function intArray2RangeString($int_array) 2{ 3 if (count($int_array) == 0) { 4 return ""; 5 } 6 7 //返り値 8 $result = $int_array[0]; 9 //範囲開始値 10 $range_start_num = $int_array[0]; 11 //前回ループ値 12 $prev_num = $int_array[0]; 13 for ($i = 1; $i < count($int_array); $i++) { 14 if ($prev_num + 1 == $int_array[$i]) { 15 if ($i + 1 == count($int_array)) { 16 $result = "{$result}-{$int_array[$i]}"; 17 } 18 } else { 19 if ($range_start_num != $prev_num) { 20 $result = "{$result}-{$prev_num},{$int_array[$i]}"; 21 } else { 22 $result = "{$result},{$int_array[$i]}"; 23 } 24 $range_start_num = $int_array[$i]; 25 } 26 $prev_num = $int_array[$i]; 27 } 28 return $result; 29}
そもそもPHPにはこのような関数が存在しますでしょうか。(都合上、バージョンはPHP5.2です。)
また、より簡潔に記述できる方法がありましたら、アドバイスを頂ければと思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/30 12:33