php获取一堆数字里面的区间段

 
更多

php获取一堆数字里面的区间段。

<?php

/**
 * @param array $numer_list
 * @return array
 */
function getBeginEndFromNumberList(array &$numer_list) {
    if (!$numer_list) {
        return [];
    }

    sort($numer_list);

    $min = $numer_list[0];
    $max = end($numer_list);

    $block_list = [];
    $key = $min;
    for ($i = $min; $i <= $max; $i ++) {
        if (!in_array($i, $numer_list)) {
            $key = $i;
        } else {
            $block_list[$key][] = $i;
        }
    }

    foreach ($block_list as $key => &$block) {
        if (count($block_list[$key]) > 1) {
            $block_list[$key] = min($block_list[$key]) . ',' . max($block_list[$key]);
        } else {
            $block_list[$key] = (string)reset($block);
        }
    }

    return array_values($block_list);
}

使用如下:

$number_list = [1, 2, 3, 4, 6, 7, 13, 19, 20, 21];
echo '<pre>';print_r(getBeginEndFromNumberList($number_list));
//打印结果如下
Array
(
    [0] => 1,4
    [1] => 6,7
    [2] => 13
    [3] => 19,21
)
打赏

本文固定链接: https://www.cxy163.net/archives/3304 | 绝缘体

该日志由 绝缘体.. 于 2019年11月30日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: php获取一堆数字里面的区间段 | 绝缘体
关键字: , , , ,

php获取一堆数字里面的区间段:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter