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>

  

时间: 2025-01-03 15:33:02

php中将SimpleXMLElement Object转化为普通数组的相关文章

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

做微信开发,鉴于微信POST的消息是XML数据包,通过SimpleXMLElement Object获取的数据不好操作,需要转化为普通数组. 网上找了很多方法都不理想,发现通过json_decode和json_encode可以转化,遂分享给大家. $postStr = '<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]>

C#中将图片文件转化为二进制数组-用于数据库存储

在项目开发中,使用SQL Server存储数据,数据类型image可以保存图片.但是在存储之前需要将图片转化为二进制数组的形式进行赋值. 将图片文件转换为二进制数组 /// <summary> /// 将图片文件转换为二进制数组 /// </summary> /// <param name=”picpath”>图片路径</param> /// <returns>二进制数组</returns> private byte[] GetBin

将类数组对象(array-like object)转化为数组对象(Array object)

用法:Array.prototype.slice.call(array-like object) // 创建一个类数组对象 var alo = {0:"a", 1:"b",2:"c", length:3}; // 转化 var arr = Array.prototype.slice.call(alo); console.log( Array.isArray(alo) // false ) console.log( Array.isArray(ar

阿里大鱼simplexmlelement object 取值PHP

SimpleXMLElement Object(    [code] => 15    [msg] => Remote service error    [sub_code] => isv.MOBILE_NUMBER_ILLEGAL    [sub_msg] => 号码格式错误    [request_id] => zqbnzcj7btxy) $result=$obj->sub_msg; 结果:号码格式错误 SimpleXMLElement Object(    [re

javascript 转化一个数字数组为function数组(每个function都弹出相应的数字)

javascript 转化一个数字数组为function数组(每个function都弹出相应的数字) var arrNum = [2,3,4,5,6,10,7]; var arrFun = []; function change(arr){ var fun = function(val){ return function(){ return val; }; } for(var i=0;i<arr.length;i++){ arrFun.push(fun(arr[i])); } return ar

把stdclass object 转化成数组

今天从接口上获取数据,用json_decode转化成发现是一个stdClass Object .例子: 从网上搜到一些方法,我感觉好用的解决方案有两个://PHP stdClass Object转array  function object_array($test) {      if(is_object($array)) {          $array = (array)$array;       } if(is_array($array)) {           foreach($ar

JS数组之伪数组以及伪数组转化为标准数组

什么是伪数组? 1,具有length属性 2,能够使用数组遍历方法遍历它们 3,不具有数组的push,pop等方法 哪些是伪数组? 典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组, 诸如var obj5 = { 99: ‘abc’, length: 100 }这样的数据也是伪数组 真数组的判断方法 * 如何判断数据是不是真数组:* 1.数据 instanceof Ar

JSON 数组转化 OC的数组转化成OC格式的字符串

1.将OC的数组转化成OC格式的字符串    NSArray * arr = @[@"aa",@"bb",@"cc"];2.转化    NSString * jsonStr = [arr JSONString];    NSLog(@"%@",jsonStr);

javascript 伪数组和转化为标准数组

1: 什么是伪数组 伪数组是一个含有length属性的json对象, 它是按照索引的方式存储数据, 它并不具有数组的一些方法,只能能通过Array.prototype.slice转换为真正的数组,并且带有length属性的对象. var obj = {0:'a',1:'b',length:2}; // 伪数组 var arr = Array.prototype.slice.call(obj); // 转化为数组 console.log(arr); // 返回["a","b&q