如何遍历从xml加载到php的数组



我有一个XML文件,如下所示:

<Main>
<SubMain>
<First>10570</First>
<Time>07:33:51</Time>
<Result>500</Result>
<Taken>8:14</Taken>
<Results>
<int>100</int>
<int>100</int>
<int>85</int>
<int>100</int>
<int>100</int>
<int>100</int>
<int>100</int>
</Results>
</SubMain>
</Main>

我正在使用simplexml_load_file:从文件加载到PHP

$xml=simplexml_load_file("note.xml") or die("Error: Cannot create object");
foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child->First . $child->Time . $child->Taken ."<br>";
}

当我在Results行中加载时,我没有得到任何返回的值,我该如何进入这个子数组?如果这是一个愚蠢的问题,我很抱歉,但今天我被难住了!

编辑:删除了拼写错误,因为它在代码中不存在,还需要清除First、Time、Result等返回的是预期值,这是我似乎无法从中提取数据的子数组(Results(。

使用SimpleXML时返回的所有值都是SimpleXMLElement对象,这些对象可以强制转换为本机类型(例如var_dump($xml->SubMain->First);(。它还实现了Traversable,因此可以在foreach循环中使用。

要获得<int>值,您需要循环<Result>:的子级

foreach ($xml->SubMain->Results->children() as $result) {
// $result is a SimpleXMLElement object, needs casting
var_dump(intval($result));
}

您也可以直接转换为数组,但请注意,您将有一个字符串数组:

$ints = (array) $xml->SubMain->Results->int;
var_dump($ints); // actually strings

所以你可以这样做:

$ints = array_map('intval', (array) $xml->SubMain->Results->int);
var_dump($ints);

最新更新