2

我只是试图在我从 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->category 似乎没有针对该列表。XML 文件中的“SimpleXMLElement 对象”似乎妨碍了我通常使用数组的方式。有谁知道我怎样才能到达那些 cat_1 ets。清单?

4

2 回答 2

1

请注意,这$array->category是一个对象,而不是数组,并且cat_*属性。由于它们都是公共的,因此请使用:

$new_array = get_object_vars($array->category);
于 2012-12-20T04:57:44.973 回答
0

您应该使用将 simpleXML 对象转换为数组

$array = json_decode(json_encode((array) $simplexmlob)), 1);

然后$array['category']用于其他事情。无需使用 foreach 循环。

于 2012-12-20T06:08:01.090 回答