你需要最终的关联数组或者json的格式是什么情况呢?
解决方案 »
- PHP分页查询
- 近日,我在论坛上发表了“低薪诚聘PHP程序员(广州)”,招了不少攻击。说实话,我不知道你们能够拿多少,如果没有过万的话,请不要指责。
- 大家如何解决中文图片文件名在LINUX下的显示的?
- 列出指定目录下所有文件的PHP代码?
- xp iis 环境下安装php5.2.5时的问题
- 急````帮帮忙```联动菜单的增删改查不知道怎么实现
- 即使生成excel表格的问题
- 这样真难看,大家帮忙美化一下吧,谢,急着教的
- 如何提高PHP处理速度
- PHP SOAP调用WSDL参数设置问题,
- 紧急求助高人!!PHP webservice相关,我这个WSDL是什么错误??!!在线等!!急啊。。
- 一组字符串 输出3种结果
$line = array();
foreach($content as $k=>$v)
{
$key = $k+1;
$tabs = substr_count($v,"\t");
$lines[$tabs] = $k;
$newArray[$k] = array('id'=>$k,'pid'=>$lines[$tabs-1],'name'=>str_replace("\t",'',$v));
//大致模拟成数据库记录
echo print_r(array('id'=>$k,'pid'=>$lines[$tabs-1],'name'=>str_replace("\t",'',$v)),1)."<br/>";
}
$ar = file('13.txt');foreach($ar as $v) {
$t = preg_replace("/(\t*)(.+)$/e", 'strlen("$1").","."$2"', $v);
list($deep, $value) = split(',', trim($t));
$tmp[] = array('deep' => $deep, 'value' => $value);
}
//print_r($tmp);$i = 0;
$deep = 1;
$out[] = array('value' => $tmp[$i++]['value'], 'child' => foo());
echo count($tmp);function foo() {
global $tmp, $i, $deep;
$r = array();
while($i < count($tmp)) {
if($tmp[$i]['deep'] == $deep) {
$r['vaule'][] = $tmp[$i]['value'];
$i++;
}
if($tmp[$i]['deep'] > $deep) {
$deep = $tmp[$i]['deep'];
$r['child'][] = foo();
}
if($tmp[$i]['deep'] < $deep) {
$deep = $tmp[$i]['deep'];
return $r;
}
}
return $r;
}print_r($out);
$line = array();
foreach ($content as $k => $v)
{
$key = $k + 1;
$tr[substr_count($v, "\t")][]=$k; //store this level's
$pid=is_array($tr[substr_count($v, "\t")-1])?end($tr[substr_count($v, "\t")-1]):"";
echo print_r(array(
'id' => $k,
'pid' =>$pid, //get previous level's last node
'name' => str_replace("\t", '', $v)), 1) . "<br/>";
}
1.可以参考一下yaml,看能不能先转成符合yaml语法的数据,语法规范:
http://www.yaml.org/spec/1.2/spec.html2.先把数据分行分段存入数据库,在按条件查询输出。
结贴之前,贴一个我的代码,非常繁杂。<?php$list = file('13.txt');$region = array();
$one = getList($list, 1);
foreach ($one as $value_one)
{
$block = getBlock($value_one);
$array_one = getValue($value_one);
$two = getList($block, 2);
//print_r($two);
foreach ($two as $value_two)
{
$array_two = getValue($value_two);
if($array_two['id']>0){
$region[$array_one['name']][$array_two['id']] = $array_two['name'];
}else{
$block = getBlock($value_two);
$array_three = getValue($value_two);
$three = getList($block, 3);
foreach ($three as $value_three)
{
$array_three = getValue($value_three);
if($array_three['id']>0){
//echo $array_three['name'];
$region[$array_one['name']][$array_two['name']][$array_three['id']]=$array_three['name'];
}else{
/* 四级 */
$block = getBlock($value_three);
$array_four = getValue($value_three);
$four = getList($block, 4);
foreach ($four as $value_four)
{
$array_four = getValue($value_four);
if($array_four['id']>0){
$region[$array_one['name']][$array_two['name']][$array_three['name']][$array_four['id']]=$array_four['name'];
}else{
/* 五级 */
$block = getBlock($value_four);
$array_five = getValue($value_four);
$five = getList($block, 5);
foreach ($five as $value_five)
{
$array_five = getValue($value_five);
if($array_five['id']>0){
$region[$array_one['name']][$array_two['name']][$array_three['name']][$array_four['name']][$array_five['id']]=$array_five['name'];
}
}
/* 五级 */
}
}
/* 四级 */
}
}
}
}
}print_r($region);/* 获取一个指定区域名称的下级内容 */
function getBlock($name)
{
global $data;
/* 计算级别 */
preg_match("@[\r\n](\t+)[\d-/]+{$name}[\r\n]@is", $data, $line);
$no = strlen($line[1]); preg_match("@{$name}([\r\n]+[\s\S]*?)[\r\n]\t{{$no}}\d@is", $data, $block);
return $block[1];
}/* 获取列表 */
function getList($list, $key=1)
{
preg_match_all("@[\r\n]\t{{$key}}\d+/[-\d]+/([-\d]+/[^\r\n]+)[\r\n]@is", $list, $item);
return $item[1];
}function getValue($row)
{
$array = array();
list($array['id'], $array['name']) = explode("/", $row);
return $array;
}?>