xml转array方法没错,只是xml中有三个list,而数组中却不能出现三个$arr['list'],所以这个方法自动把三个list中的内容放进了一个二维数组中.
没有现成函数,只能自己写;我有一个别人写的函数:
php
private $version = '1.0';
private $root = 'root';
private $xml = null;
function __construct() {
$this-xml = new XmlWriter();
}
function toXml($data, $eIsArray=FALSE) {
if(!$eIsArray) {
$this-xml-openMemory();
$this-xml-startDocument($this-version, $this-encoding);
$this-xml-startElement($this-root);
foreach($data as $key = $value){
if(is_array($value)){
$this-xml-startElement($key);
$this-toXml($value, TRUE);
$this-xml-endElement();
continue;
$this-xml-writeElement($key, $value);
return $this-xml-outputMemory(true);
$res = array(
'array' = array(
'test' = 'test',
'b' = array('c'='c', 'd'='d')
),
'a' = 'haha'
);
echo $xml-toXml($res);
$xml=simplexml_load_string($xml);
$xml=(array)$xml;
var_dump($xml);
这个是处理成数组的
simplexml_load_string可以把xml解析成对象,然后可以用var_dump进行解析.
php内部库并没有包含直接把xml解析成数组的模块.
而且xml本来包含节点概念,解析成对象以后可以直接访问每一个节点,而数组相对就要难以理解的多.
所以呢解析成数组并不比解析成对象有多少优势.
如果你对数组实在有需求的话,可以自己写一个库,并不会太难.
instanceof 用来检查前面的对象是否是后面这个类的实例,如果是则强制转换为数组
代码
Code highlighting produced by Actipro CodeHighlighter (freeware);// Xml 转 数组, 包括根键,忽略空元素和属性,尚有重大错误
function xml_to_array( $xml )
{
$reg = "/(\\w◆)[^]*?([\\x00-\\xFF]*?)\\/\\1/";
if(preg_match_all($reg, $xml, $matches))
$count = count($matches[0]);
$arr = array();
for($i = 0; $i $count; $i◆◆)
$key= $matches[1][$i];
if(array_key_exists($key, $arr))
if(is_array($arr[$key]))
if(!array_key_exists(0,$arr[$key]))
$arr[$key] = array($arr[$key]);
}else{
$arr[$key][] = $val;
$arr[$key] = $val;
return $arr;
return $xml;
// Xml 转 数组, 不包括根键
function xmltoarray( $xml )
$arr = xml_to_array($xml);
$key = array_keys($arr);
return $arr[$key[0]];
以上就是土嘎嘎小编为大家整理的php之xml转数组函数的方法,php相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!