0

我正在尝试将 XML 文件读入数组,但遇到了一些麻烦。这是我的代码到目前为止的样子:

 $inst = new SimpleXMLElement($xml);
 foreach( $inst->xpath("record[@id='" . $range . "']") as $u ) {
      foreach($fields as $field) {
          $results[$field] = $u->$field;
      }
 }

但是当我这样做时print_r($results),这就是输出的内容:

Array
(
[field1] => SimpleXMLElement Object
    (
        [0] => field1Data
    )

[field2] => SimpleXMLElement Object
    (
        [0] => field2Data
    )

[field3] => SimpleXMLElement Object
    (
        [0] => field3Data
    )
)

如何直接从 中获取数据SimpleXMLElement Object并将其存储在数组中而不是让它这样做?我尝试将它作为一个数组访问,$u->$field[0]但这也不起作用。

4

1 回答 1

0

将 SimpleXMLElement 转换为字符串是一般解决方案(有关规范问题,请参阅“强制将 SimpleXML 对象转换为字符串,无论上下文如何”),对于包含所有SimpleXMLElements 的完整数组,例如由xpath()您自己创建的返回或类似的,常见的方法是将数组映射到trim

$results = array_map('trim', $results);

strval

$results = array_map('strval', $results);

例如:

$inst    = new SimpleXMLElement($xml);
list($u) = $inst->xpath("record[@id='" . $range . "']")
foreach ($fields as $field) {
    $results[$field] = $u->$field;
}

$results = array_map('strval', $results);
于 2013-03-06T05:57:26.830 回答