Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

php xml转数组

作者:狂战天下   发布日期:2026-02-28   浏览:38

<?php
// 将 XML 转换为数组的示例代码

function xmlToArray($xmlString) {
    // 将 XML 字符串转换为 SimpleXMLElement 对象
    $xml = simplexml_load_string($xmlString);

    // 定义递归函数将 SimpleXMLElement 对象转换为数组
    function xmlObjToArray($xmlObj) {
        $arr = [];
        foreach ($xmlObj as $key => $value) {
            // 如果子元素是对象,则递归处理
            if (gettype($value) === 'object') {
                $subArray = xmlObjToArray($value);
                // 如果同名元素有多个,确保它们以数组形式存储
                if (array_key_exists($key, $arr)) {
                    if (!is_array($arr[$key])) {
                        $arr[$key] = [$arr[$key]];
                    }
                    $arr[$key][] = $subArray;
                } else {
                    $arr[$key] = $subArray;
                }
            } else {
                // 否则直接存储值
                $arr[$key] = (string)$value;
            }
        }
        return $arr;
    }

    // 调用递归函数并返回结果
    return xmlObjToArray($xml);
}

// 示例 XML 字符串
$xmlString = '<?xml version="1.0" encoding="UTF-8"?>
<root>
    <item id="1">
        <name>Item 1</name>
        <price>10.99</price>
    </item>
    <item id="2">
        <name>Item 2</name>
        <price>15.49</price>
    </item>
</root>';

// 调用函数并将结果打印出来
$array = xmlToArray($xmlString);
print_r($array);
?>

解释说明:

  1. simplexml_load_string($xmlString):将 XML 字符串解析为 SimpleXMLElement 对象。
  2. xmlObjToArray($xmlObj):这是一个递归函数,用于将 SimpleXMLElement 对象转换为 PHP 数组。它遍历每个 XML 元素,并根据其类型(对象或值)进行相应的处理。
  3. 处理重复元素:如果同一个标签名有多个元素,它们会被存储在一个数组中,以确保数据结构的完整性。
  4. 示例 XML 字符串:提供了一个简单的 XML 字符串作为输入,演示如何将其转换为数组。
  5. print_r($array):最后,使用 print_r 函数输出转换后的数组,以便查看结果。

这段代码展示了如何将 XML 数据转换为 PHP 数组,适用于需要处理 XML 数据并将其转换为更易操作的数据结构的场景。

上一篇:php 换行符

下一篇:php 数组反转

大家都在看

php session用法

php 定义常量

php soapclient

phpisset函数

php html转图片

php后端

php爬虫框架

php多线程与并发

php读取csv文件

php+mysql动态网站开发

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站