PHP-关于PHP处理的一个递归问题

WP主题讨论 WP主题讨论 主题:1013 回复:2239

PHP-关于PHP处理的一个递归问题

泛泛之交 发布于 2017-10-06 字数 1961 浏览 1180 回复 1

前面是数据:
251800
260800;260802;260900;261000
260800;260802;260900;261000
260800;260802;260900;261000
4000_3000_2000_1000;4000_3000_2000_1000;4000_3000_2000_1000;4000_3000_2000_1000;4000_3000_2000_1000;4000_3000_2000_1000
4000_3000_2000_1000;4000_3000_2000_1000;4000_3000_2000_1000;4000_3000_2000_1000;4000_3000_2000_1000;4000_3000_2000_1000
下面是要用到的代码方法:

//得到整个的需要验证的数组序列
private function getDataArray($value){
if(!$this->isNumeric($value)){
$arr = $this->checkSeparator($value);
}
if(is_array($arr)){
foreach($arr as $key=>$value){
$arr[] = $this->getDataArray($value);
}
}
return $arr;
}
//按照相应的符号来对其进行分割成数组
private function checkSeparator($value){
if(strstr($value,";")){
$arr = $this->splitBySeparator(";",$value);
}elseif(strstr($value,"_")){
$arr = $this->splitBySeparator("_",$value);
}elseif(strstr($value,"-")){
$arr = $this->splitBySeparator("-",$value);
}elseif(strstr($value,",")){
$arr = $this->splitBySeparator(",",$value);
}else{
$arr = $value;
}
return $arr;
}
//使用分隔符对数据进行分隔
private function splitBySeparator($separator,$data){
if($separator == ";"){
$arr = explode($separator,$data);
}elseif($separator == ","){
$arr = explode($separator,$data);
}elseif($separator == "_"){
$arr = explode($separator,$data);
}elseif($separator == "-"){
$arr = explode($separator,$data);
}else{
return false;
}
return $arr;
}

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(1

灵芸 2017-10-17 1 楼

上面那段是一个完整的字符串吗?你要要按照不同的分隔符把所有的数字都放在一个数组里面吗?
如果这些内容是在一个文件里面的话,直接把它们全部读取出来,作为一个完整的字符串进行处理,然后把里面各种不同的需要用来分割的字符,统一替换成一个,使用explode函数就能得到一个一维数组。
如下示例:

$numbers = '260800;260802;260900;261000;4000_3000_2000_1000;4000,3000,2000,1000;4000-3000-2000-1000';//如果里面有换行的话,需要使用preg_replace函数进行替换
$numbers = strreplace(array('',',','-'),';',$numbers);
$arr = explode(';',$numbers);