繁体   English   中英

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

[英]Convert multi-dimensional multi-object array to standard multi-dimensional array in PHP

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

数组的一部分的切片:

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

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

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

谢谢你的帮助!

您是否知道这些对象具有可以使用的功能 请尝试以下操作:

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

这个问题经常被问到,但是在将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)和预期结果(数组)的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM