help:$b="12345678901234567890";任意字串,分隔长度不定,每次分隔的位置不确定,没有分隔符(分隔过程允许使用临时分隔符)。比如(8,3,12,1) 括号中每个数字是分隔的位置,结果为:12 34 45789 0123 4567890试写出算法!我的想法是把括号中的分隔位置进行排列后,再进行分隔。。观看的各位有什么别的方法没有或有什么函数可以实现的
调试欢乐多
最后一个1 12 然后是3 34 然后就8 最后是12
我找了很多函数,不知道 split 行不行
//测试通过,不知是不是你想要的结果
//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
看来函数不过关,我一直在在字串中找。。今天可以交差了不言谢。。你懂
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