zoukankan      html  css  js  c++  java
  • php中将SimpleXMLElement Object转化为普通数组

    php中将SimpleXMLElement Object转化为普通数组

    转: http://www.php230.com/transform-simplexmlelement-object-to-array-with-php.html

    改成:属性和元素都作为数组的值

    php代码:

    <?
    function xmlToArr($xml, $root = true)
    {
    		if(!$xml->children())
    		{
    			return (string)$xml;
    		}
    		$array = array();
    		foreach($xml->children() as $element => $node)
    		{
    			$totalElement = count($xml->{$element});
    			if(!isset($array[$element]))
    			{
    				$array[$element] = "";
    			}
    			// Has attributes
    			if($attributes = $node->attributes())
    			{
    				$data = array();
    				foreach($attributes as $attr => $value)
    				{
    					$data[$attr] = (string)$value;
    				}
    
    				if($totalElement > 1)
    				{
    					$data2 =  xmlToArr($node, false);
    					$array[$element][] = array_merge($data,$data2);
    				}
    				else
    				{
    					$data2['value'] = (count($node) > 0) ? xmlToArr($node, false) : (string)$node;
    					$array[$element] = array_merge($data,$data2);
    				}
    
    			}
    			else
    			{
    				if($totalElement > 1)
    				{
    					$array[$element][] = xmlToArr($node, false);
    				}
    				else
    				{
    					$array[$element] = xmlToArr($node, false);
    				}
    			}
    		}
    		if($root)
    		{
    			return array($xml->getName() => $array);
    		}
    		else
    		{
    			return $array;
    		}
    }
    
    $array = array();
    $xml=simplexml_load_file("manhua.xml");
    print_r(xmlToArr($xml,false));
    

      manhua.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <list>
      <manhua id="1" abc="2">
        <title tt="1">刀剑神域</title> 
        <test>
    		<a>1</a>
    		<b>2</b>
    	</test>  
    	<test>
    		<a>11</a>
    		<b>22</b>
    	</test> 
        <dir>djsy</dir>
    	<img>djsy.jpg</img>
        <info></info>
      </manhua>
        <manhua>
        <test>
    		<a>1</a>
    		<b>2</b>
    	</test>  
    	<test>
    		<a>11</a>
    		<b>22</b>
    	</test> 
        <title>刀剑神域_calibur</title>  
        <dir>djsy_calibur</dir>
    	<img>djsy_calibur.jpg</img>
        <info></info>
      </manhua>
        <manhua>
        <title>刀剑神域_fairydance</title>  
        <dir>djsy_fairydance</dir>
    	<img>djsy_fairydance.jpg</img>
        <info></info>
      </manhua>
        <manhua>
        <title>刀剑神域_progressive</title>  
        <dir>djsy_progressive</dir>
    	<img>djsy_progressive.jpg</img>
        <info></info>
      </manhua>
        <manhua>
        <title>刀剑神域_少女们的乐章</title>  
        <dir>djsy_snmdyz</dir>
    	<img>djsy_snmdyz.jpg</img>
        <info></info>
      </manhua>
       <manhua>
        <title>刀剑神域_幽灵子弹</title>  
        <dir>djsy_youlingzidan</dir>
    	<img>djsy_youlingzidan.jpg</img>
        <info></info>
      </manhua>
       <manhua>
        <title>小刀剑神域</title>  
        <dir>xiaodaojianshenyu</dir>
    	<img>xiaodaojianshenyu.jpg</img>
        <info></info>
      </manhua>
       <manhua>
        <title>新娘summer</title>  
        <dir>xinian_summer</dir>
    	<img>xinian_summer.jpg</img>
        <info></info>
      </manhua>
       <manhua>
        <title>Sword_ArtOnline_Silica_Edition</title>  
        <dir>Sword_ArtOnline_Silica_Edition</dir>
    	<img>Sword_ArtOnline_Silica_Edition.jpg</img>
        <info></info>
      </manhua>
    </list>
    

      

     Jquery+Ajax,遍历对象和数组:

    function listObj(obj,str,level){
    	
    	if(!obj)
    		return str;
    	
    	level++;
    	for (x in obj)  
    	{  
    		if(typeof(obj[x])=="object"){
    			str+=x+'---'+level+'级目录--<br/>
    ';
    			str=listObj(obj[x],str,level)
    		}else{
    			str+=x+'--'+obj[x]+'<br/>
    ';
    		}
    	} 
    	return str;
    }
    
    $(function(){    
     $.getJSON("1.php","", function(obj){ 
     		var str="";
    		 var manhua=obj.manhua;
    		 $.each(manhua,function(n,value) {   
    			str+='--'+n+'--1级目录---'+'<br/>
    ';
    			str=listObj(value,str,1);
    				 
               });  
    		   $("#st").html(str);
    });
    

      

  • 相关阅读:
    表格边框的合并
    solr服务搭建
    JedisClient操作redis 单机版和集群版
    redis集群的搭建
    FastDfs的搭建
    打开与关闭端口
    zookeper分布式搭建1
    zookeper分布式搭建
    Zookeeper的安装
    Linux下Jdk的安装
  • 原文地址:https://www.cnblogs.com/jevil/p/4862082.html
Copyright © 2011-2022 走看看