0

以下の SimpleXMLElement オブジェクト内の配列としてをループする必要がありitemsますが、 を使用してアクセスできないようです$order->order->order->items。同じ形式を使用して、配送先住所と請求先住所にアクセスできます。$order->order->order->delivery_address同じ方法でアイテム配列に到達することが期待されています。ただし、空の SimpleXMLElement オブジェクトを取得すると、print_r($order->order->order->items)

SimpleXMLElement Object
(
    [order] => SimpleXMLElement Object
        (
            [id] => 860268
            [shopkeeper_orderno] => 1001
            [customer] => 797476
            [creationdate] => Apr 19 2012 10:36:38:100AM
            [reference] => k2koju45rmaqfl45n20xbkmq
            [net] => 1500
            [vat] => 17.5
            [status] => 0
            [isnew] => 1
            [deductions] => 0
            [postage] => 1
            [paymentmethod] => PayPal              
            [instructions] => SimpleXMLElement Object
                (
                )

            [errors] => SimpleXMLElement Object
                (
                )

            [kashflow_synch] => 0
            [order] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [billing_address] => SimpleXMLElement Object
                                (
                                    [0] => 

                                )

                        )

                    [1] => SimpleXMLElement Object
                        (
                            [delivery_address] => SimpleXMLElement Object
                                (
                                    [0] => 

                                )

                        )

                    [2] => SimpleXMLElement Object
                        (
                            [items] => Array
                                (
                                    [0] => SimpleXMLElement Object
                                        (
                                            [id] => 1285158
                                            [headerID] => 860268
                                            [productID] => 4867690
                                            [description] => TEST ORDERING PF NODES - Special Offer Price
                                            [net] => 1400
                                            [vat] => 0
                                            [qty] => 1
                                            [formID] => -1
                                        )

                                    [1] => SimpleXMLElement Object
                                        (
                                            [id] => 1285159
                                            [headerID] => 860268
                                            [productID] => 4959678
                                            [description] => Wedding dress
                                            [net] => 100
                                            [vat] => 17.5
                                            [qty] => 1
                                            [formID] => -1
                                        )

                                )

                        )

                )

            [postage_tax] => 0
            [dispatched] => 0
            [paybyotherid] => -1
            [ip] => 81.168.43.121   
            [wheredidyouhearid] => -1
        )

)
4

4 に答える 4

1

あなたのアイテムは実際には注文配列の2番目のオフセットにあります。

これらを処理するには、xPath を使用するだけです。

foreach($xmlObject->xpath('/order/order[2]/items') as $item)
{
   // Do something with my $item
}
于 2012-04-19T11:31:20.893 に答える
1

編集:名前付けを間違えたのを見ました。親を呼び出す必要が<orders>あり、サブアイテム<order>


SimpleXMLElement空のようです。実際、通常は埋められていますが、ダンプ時には表示されません (このクレイジーな動作を考えた人は誰でも)

これを試すことができますか?

foreach($order->orders->order as $order) { // should be orders then
  echo $item->getName();
}

またはSimpleXMLElement::children()で試してください

于 2012-04-19T11:30:10.800 に答える
0

以下のようなループを使用できます。その後、必要なのは $items->id だけです

   foreach($order->children()->children()->items as $items)
      {

      }
于 2012-04-19T11:30:20.587 に答える
0

Dan Lees の提案を使用して、 SimpleXMLElement::children() を試し、以下を実行しました

foreach ($order->children() as $order) {
        foreach ($order->children() as $order_details) {
            foreach ($order_details->children() as $order_items) {
                echo $order_items->id;
            }
        }
    }
于 2012-04-19T13:10:41.603 に答える