传来的参数格式为下划线分隔的数字,字串长度随机。比如:
1_1
1_2_10
12_1_5_10...
等等。
拿1_2_10为例,要对它处理得到1、1_2、1_2_10;
拿12_1_5_10为例,要对它处理得到12、12_1、12_1_5、12_1_5_10 (规律看出来了吧)
求好的算法。

解决方案 »

  1.   

    $s = '12_1_5_10';$r[] = strtok($s, '_');
    for($i=0; $t = strtok('_'); $i++) {
      $r[] = $r[$i] . '_' . $t;
    }
    print_r($r);
    Array
    (
        [0] => 12
        [1] => 12_1
        [2] => 12_1_5
        [3] => 12_1_5_10
    )
      

  2.   

    还是老大猛,我的就是裹脚布$str = '12_1_5_10';
    $array = explode('_', $str);
    $newarr = array();
    for ($i = 0; $i < count($array); $i++) {
        $newarr[]=array_slice($array,0,$i+1);
    }
    foreach($newarr as $value){
        echo '<pre>'.implode('_',$value).'</pre>';
    }
      

  3.   

    用数组也是一样的$str = '12_1_5_10';
    $array = explode('_', $str);
    $newarr = array();
    foreach($array as $i=>$t)
      $newarr[] = join('_', array_slice($array, 0, $i+1));