Page

[PHP]做了道简单的php练习题

741Anson17-05-16


根据字符串“1-3,10,5-6,8-8”生成字符串“1,2,3,5,6,8,10”。
我的做法:
我的解法:

<?php

function getNumber($str){
    $arr = explode(',', $str);     //分割字符串组成数组
    $arr2 = array();
    foreach($arr as $value){
        if(is_numeric($value)){      //判断是否是单个数字
            $arr2[] = $value;
        }else{
            $arr3 = explode('-', $value);       //获取横杆两边区间
            $arr2 = array_merge($arr2, range($arr3[0], $arr3[1]));     //合并数组
        }
    }
    asort($arr2);                 //升序排列数组
    return implode($arr2, ',');    //组合成字符串返回
}

$str = '1-3,23,5-7,8-8';
echo getNumber($str);



李照耀大师解法:

<?php

function getNumber($str){
    $result = array();     //初始化数组           
    $str_array = explode(',', $str);     //按逗号分隔
    foreach($str_array as $v){
        $range_array = explode('-', $v);     //按横杆分隔
        if (count($range_array) == 1) {
            $range_array[1] = $range_array[0];     //处理单个数字1,或者1-1
        }
        $result = array_merge($result, range($range_array[0], $range_array[1]));
    }
    asort($result);
    return implode(',', $result);
}

$str = '1-3,23,5-7,8-8';
echo getNumber($str);

?>


两个方法都是同一个结果:

blob.png




来自ansion

2017年5月16日