2

SimpleXMLElement の子に配列としてアクセスするにはどうすればよいですか?

SimpleXMLElement(9) {
 name => "John" (11)
 phone => array(2) [
    0 => "556 221 000" (19)
    1 => "312 555 110" (19)
 ]
}

この記事によるとhttp://www.sitepoint.com/parsing-xml-with-simplexml/経由で簡単にアクセスできます

$sxElement->phone[0];

しかし、ダンプは次のように返します。

SimpleXMLElement(0)

forサイクルでこれにアクセスする必要があります。ありがとう。

編集 (XML の例):

<company>
  <phonebook>
    <name>John</name>
    <phone>556 221 000</phone>
    <phone>312 555 110</phone>
  </phonebook>
</company>

別のオブジェクトで foreach を実行し、反復子の値に従って正しい電話を接続する必要があります。

4

3 に答える 3

4

データを配列にキャストする必要があるので、これを試してください(私にとってはうまくいきました)。

$el = new SimpleXMLElement(
    '<company>
      <phonebook>
        <name>John</name>
        <phone>556 221 000</phone>
        <phone>312 555 110</phone>
      </phonebook>
    </company>'
);

$array = (array) $el->phonebook->phone;

この出力は、array操作の準備ができています。

Array
(
    [0] => 556 221 000
    [1] => 312 555 110
)

同様にキーを取得する別の方法。

foreach($sxElement->phone as $i => $value) {
    echo "{$i} : {$value}" . PHP_EOL;
}

これには外側のループからアクセスできませんが。

于 2013-11-07T13:51:16.773 に答える
2

あなたは試しましたか:

$sxElement->phone[0]->__toString();

それが役立つことを願っています。

よろしく、

マルセロ

于 2013-11-07T14:11:26.387 に答える
1

配列を操作したいときに simpleXML を操作するときに見つけた 1 つの解決策は、json_decode(). 次に、私が慣れ親しんでいる連想配列があります。

于 2013-11-07T13:50:14.473 に答える