$arr[][][][][][]这样一直找下去。或者重新构造数组,选取值!is_array的,即为你的内容。function findcontent($arr){
global $newarr;
foreach($arr as $con) {
if(is_array($con)) findcontent($con);
else $newarr[]=$con;
}
}
global $newarr;
foreach($arr as $con) {
if(is_array($con)) findcontent($con);
else $newarr[]=$con;
}
}
$tArr = array();
function getContent($pArray,&$tArray=NULL){
foreach($pArray as $k=>$v){
if(is_array($v)) {
getContent($v,&$tArray);
}else if($k=="content"||$k=="name"){
$tArray[] = $v;
}
}
}getContent($arr,&$tArr);
echo "<pre>";
print_r($tArr);
echo "</pre>";
function getContent($pArray,&$tArray=NULL){
foreach($pArray as $k=>$v){
if(is_array($v)) {
getContent($v,&$tArray);
}else {
$tArray[][$k] = $v;
}
}
}
function findcontent($arr){
global $newarr;
foreach($arr as $con) {
if(is_array($con)) findcontent($con);
else $newarr[]=$con;
}
}
其中
if(is_array($con)) findcontent($con);//递归
else $newarr[]=$con;//保存,也可在此显示
是深度优先的,因为递归调用在前。他一直要到达“叶”才返回,所以出现你遇到的问题
改成广度优先的就可以了
if(! is_array($con)) $newarr[]=$con;//保存,也可在此显示
else findcontent($con);//递归
service_id=123
key=00
rand=y
aim=学校
content=物理专业
service_id=124
key=01
rand=n
aim=学校
content=计算机专业
......
象这样解析出来的话.我想用嵌套的循环来解析.可是数组嵌套的太多了.
而且这样作的话.我装载写xml的时候也是一个很麻烦的事情.该怎么办呢?
多谢.
<?
$tArr = array("key" => array("liu","de","hua","level"=>array("zhang","xue","you","file"=>"cai","yi","lin")));
print_r($tArr);
?>
打印结果如下:
Array ( [key] => Array ( [0] => liu [1] => de [2] => hua [level] => Array ( [0] => zhang [1] => xue [2] => you [file] => cai [3] => yi [4] => lins ) ) 我怎样才能知道liudehua是属于[key]的,zhangxueyou是属于[level]的,caiyilin是属于file的,如果用您的方法都装到一个数组中去的话,那么我是没有办法区分的,而且象这些[key],[level]都是不一定的.也学在他们下面还有[level_1][file_1]等.您看这样子的话.怎么装在到内存中去呢?而且在我从内存中输出数据的时候.能判断出各个值是属于哪个[key]或者[level] 的呢?
麻烦您帮我想一下.多谢