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オブジェクトを文字列に強制する」を参照)。方法は、配列を次の場所にマップすることです。SimpleXMLElementxpath()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 に答える