PHP数组从XML文件中获取每个键/值

时间:2012-12-20 04:50:19

标签: php xml simplexml

我只是试图在我从XML文件创建的数组中获取某个层的键/值而感到困惑。 Print_R()的数组部分是:

SimpleXMLElement Object
(
Array
    (
        [category] => SimpleXMLElement Object
            (
                [@attributes] => Array
                    (
                        [settings] => maximum
                    )

                [cat_1] => 5.21
                [cat_2] => 5.05
                [cat_3] => 19.36
                [cat_4] => 21.97
                [cat_5] => 12.17
            )

    )

)

我正在尝试获取“cat_1,cat_2,cat_3 ..”键,以便我可以将它们放在自己的数组中并将它们用于其他事情。我可以做print_r($ array)并且它可以工作,但是当我尝试这样做时:

foreach ($array->category as $key => $val) {
$new_array[$key]= "$val";

}

$ array->类似乎不会定位该列表。 XML文件中的“SimpleXMLElement对象”似乎妨碍了我通常使用数组的方式。有谁知道我怎么能找到那些猫咪。列表?

2 个答案:

答案 0 :(得分:1)

请注意,$array->category是一个对象,而不是一个数组,而cat_*属性。因为他们都是公开的,只需使用:

$new_array = get_object_vars($array->category);

答案 1 :(得分:0)

您应该使用

将simpleXML对象转换为数组
$array = json_decode(json_encode((array) $simplexmlob)), 1);

然后使用$array['category']进行其他操作。没有必要使用foreach循环。