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

4

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

数组的一个部分:

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

这让我在尝试读取嵌套对象时遇到了很多问题。我已经尝试使用多个get_object_vars()循环遍历数组,但由于嵌套对象的深度和位置不断变化,我无法得到理想的结果。
PHP是否包含一个函数,可以将多维多对象数组转换为标准的多维数组?或者有没有人在此之前解决过这个问题?
感谢您的帮助!

也许你有特定的需求要实现?这似乎不是一个需要解决的“问题”,而更像是一份需要发掘的配方。 - Don
2个回答

1

你知道这些对象有functions可以使用吗?试试以下操作:

foreach ($simpleXmlObject->children() as $element) {
    echo $element->getName();
}

出于某种原因,我从未想过尝试。我会尝试一下并发布我的结果。 - user103219

1
经常有人问起这个问题,但是在将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)的示例以及期望的结果(数组)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接