help:$b="12345678901234567890";任意字串,分隔长度不定,每次分隔的位置不确定,没有分隔符(分隔过程允许使用临时分隔符)。比如(8,3,12,1) 括号中每个数字是分隔的位置,结果为:12 34 45789 0123 4567890试写出算法!我的想法是把括号中的分隔位置进行排列后,再进行分隔。。观看的各位有什么别的方法没有或有什么函数可以实现的

解决方案 »

  1.   

    难道我打错了。。12 34 5789 0123 4567890
    最后一个1 12 然后是3  34 然后就8  最后是12 
    我找了很多函数,不知道 split 行不行
      

  2.   

    晕,这样解释每个字符都有自己的位置 $b[0]=1 $b[1]=2  8的位置是就是$b[8]=9 之后。3的位置就是$b[3] 之后的位置。。以此类推。。我自己想吧!!头大!!给我这样题目。。split不行
      

  3.   


    //测试通过,不知是不是你想要的结果
    //PS:你给出的结果是数字错误的。
    $b="12345678901234567890";
    $array = array(8, 3, 12, 1);
    sort($array);
    $tmp = array();
    foreach($array as $key => $value) {
        if($key == 0) {
            $tmp[] = substr($b, 0, $value+1);
        }
        elseif($value == end($array)) {
            if($value < strlen($b)) {
                $tmp[] = substr($b, $array[$key-1]+1,$value-$array[$key-1]);
                $tmp[] = substr($b, $value+1);
            }
        }
        else {
            $tmp[] = substr($b, $array[$key-1]+1,$value-$array[$key-1]);
        }
    }
    echo implode(',',$tmp); 
    /*
    运行结果
    8, 3, 12, 1 :
    12,34,56789,0123,4567890
    3,10,5,7,2:
    123,4,56,78,901,234567890
      

  4.   

    我还自己去尝试冒泡法竟然有sort..
    看来函数不过关,我一直在在字串中找。。今天可以交差了不言谢。。你懂
      

  5.   

    多看手册是王道php提供了很丰富的内置函数的。
      

  6.   


    function insertstr($str,$instr,$inint)
    {
    $rstr=substr($str,0,$inint+1).$instr.substr($str,$inint+1,strlen($str)-$inint+1);
    return $rstr;
    }$b="12345678901234567890";
    $arr = array(3,10,5,7,2);//1 3 8 12
    sort($arr);foreach($arr as $k=>$v)
    {
    $b=insertstr($b,',',$v+$i);
    $i++;
    }echo $b;
    //结果与楼上的一样,暂时未发现bug