2012-04-19 106 views
0

我需要循环访问下面的SimpleXMLElement Object中的数组items,但似乎无法使用$order->order->order->items访问它。我可以使用相同的格式访问交付和帐单地址,即。 $order->order->order->delivery_address,并希望以相同的方式进入items数组。不过,我得到一个空的SimpleXMLElement对象,当我print_r($order->order->order->items)访问SimpleXMLElement对象的一部分 - PHP

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 
     ) 

) 

回答

0

使用丹阅读建议,我试过的SimpleXMLElement ::儿童(),并做了工作

foreach ($order->children() as $order) { 
     foreach ($order->children() as $order_details) { 
      foreach ($order_details->children() as $order_items) { 
       echo $order_items->id; 
      } 
     } 
    } 
1

编辑:我刚才看到你犯了一个错误的命名,家长需要调用<orders>和子项<order>


SimpleXMLElement 似乎为空,实际上它通常是满的,但在倾销时不显示(谁想到这种疯狂的行为)

你可以试试吗?

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

或用SimpleXMLElement::children()

+0

低于从而使父命令我不能改变的XML。我需要与我拥有的一起工作。上述给我“为foreach()提供的无效参数”错误 – LeeTee 2012-04-19 12:56:50

0

尝试,你可以使用类似下面的一个循环,那么所有你需要做的是$物品─> ID

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

     } 
+0

试过这个,不起作用。 – LeeTee 2012-04-19 12:52:31

1

您的项目实际上是在订单数组的第二个偏移量。

我只是使用xPath来处理这些。

foreach($xmlObject->xpath('/order/order[2]/items') as $item) 
{ 
    // Do something with my $item 
} 
+0

我没有直接访问XML只有上面的工作。 – LeeTee 2012-04-19 12:52:12