在很多web应用程序中,xml作为一种常见的数据传输格式被广泛使用。而php作为一种常见的web开发语言,自然也需要能够方便地处理xml数据。在php中,将xml数据转换为数组是非常常见的需求。本文将介绍如何使用php将xml数据转换为数组。
首先,要将XML数据转换为数组,需要使用PHP中的一个内置函数simplexml_load_string()。这个函数可以将一个XML字符串载入到PHP中并解析它,返回一个SimpleXMLElement实例。SimpleXMLElement是PHP中专门用于处理XML数据的类,它包含了很多有用的方法来遍历和操作XML数据。
假设我们有以下这段XML数据:
Harry Potter J.K. Rowling 29.99 The Hunger Games Suzanne Collins 22.99
我们可以使用simplexml_load_string()函数将它载入到PHP中:
$xml = '
Harry Potter
J.K. Rowling
29.99
The Hunger Games
Suzanne Collins
22.99
';
$xmlObj = simplexml_load_string($xml);现在$xmlObj就是一个SimpleXMLElement实例,我们可以使用它的方法来遍历和操作XML数据。但是,如果我们需要对XML数据进行进一步的处理,例如对某些节点进行筛选、排序等操作,使用SimpleXMLElement就不太方便了。因此,我们需要将它转换为数组。
立即学习“PHP免费学习笔记(深入)”;
将SimpleXMLElement转换为数组非常简单,只需要在对象前加上一个(array)强制类型转换即可:
$xmlArr = (array) $xmlObj; print_r($xmlArr);
以上代码会输出以下结果:
Array
(
[book] => Array
(
[0] => Array
(
[@attributes] => Array
(
[category] => children
)
[title] => Array
(
[@attributes] => Array
(
[lang] => en
)
[0] => Harry Potter
)
[author] => J.K. Rowling
[price] => 29.99
)
[1] => Array
(
[@attributes] => Array
(
[category] => fiction
)
[title] => Array
(
[@attributes] => Array
(
[lang] => en
)
[0] => The Hunger Games
)
[author] => Suzanne Collins
[price] => 22.99
)
)
)可以看到,我们得到了一个二维数组,其中每个节点都被转换为了一个关联数组。如果XML数据中有多个具有相同名称的节点,它们会被转换为一个数组,例如这里的两本书都被转换为了一个book数组。
需要注意的是,转换后的数组中,每个节点都有一个名为@attributes的键,它对应了节点的属性。例如,book节点有一个category属性,它的值被转换为了@attributes['category']键的值。
此外,由于SimpleXMLElement是一个递归的结构,它包含了许多嵌套的子节点。因此,转换后的数组也是一个递归的结构,其中每个子数组对应了一个子节点。
当然,如果XML数据中有一些特殊的节点需要特殊处理,例如CDATA节点、空节点等,就需要使用一些特殊的方法来处理了。但是对于普通的XML数据,使用simplexml_load_string()和(array)强制类型转换已经足够方便地将XML数据转换为数组了。











