php - 在PHP中将多维多对象数组转换为标准多维数组

标签 php simplexml

我有一个来自 simplexml_import_dom() 函数调用的多维多对象数组。

数组一部分的切片:

[Price] => SimpleXMLElement Object
(
    [Prices] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [MType] => A
                            [PType] => R

这让我在尝试读取嵌套对象时遇到了很多问题。我曾尝试使用多个 get_object_vars() 遍历数组,但由于嵌套对象的深度和位置不断变化,我无法产生理想的结果。

PHP 是否包含我无法找到的将多维多对象数组转换为标准多维数组的函数?或者以前有人解决过这个问题吗?

感谢您的帮助!

最佳答案

这个问题经常被问到,但是在将 XML 树转换为数组时,有一个必须逐案解决的基本问题,这使得一刀切的方法变得不可能:如何你区分节点和属性吗?

例如,您如何将此 XML 转换为数组:

<node val="attr"><val>child</val></node>

此外,一个节点可以有任意数量的同名子节点,这是关联数组无法模拟的。

长话短说,您必须制定自己的解决方案。从您的输出来看,它看起来像这样:

$arr = array();
foreach ($Price->Prices as $Prices)
{
    $tmp = array();

    foreach ($Prices->attributes() as $k => $v)
    {
        $tmp[$k] = (string) $v;
    }

    $arr[] = $tmp;
}

如果这不是您要查找的内容,请编辑您的问题并添加源文档 (XML) 示例以及预期结果(数组)。

关于php - 在PHP中将多维多对象数组转换为标准多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1806903/

相关文章:

php - XML 解析器错误 : entity not defined

PHP 简单 XML : Remove items with for

php - 如何从一个或多个与模型类的表没有直接关系的表中检索数据

php - 优化此 PHP 代码?

PHP RegisterXPathNamespace - 来源不明的 XML 前缀

php - 如何使用 PHP 检查 XML 标签是否为空?

php - 使用 PHP 的 SimpleXML 访问元素的父元素?

javascript - 单击打印按钮页面后重定向到另一个页面javascript

javascript - 如何通过输入字段值和查询结果更新Amcharts的dataprovider

javascript - 使用 PHP 和 AJAX 将大文件分块下载到服务器(远程上传)(强制设置时间限制)