PHP生成SimpleXMLElement Object文件怎么用循环显示出来,请看案例

SimpleXMLElement Object
(
  [user] => SimpleXMLElement Object
  (
  [alipay_account] => 186165713811
  [alipay_bind] => bind1
  [alipay_no] => 208860222631333101561
  [buyer_credit] => SimpleXMLElement Object
  (
  [good_num] => 0
  [level] => 0
  [score] => 0
  [total_num] => 0
  )

  [consumer_protection] => false
  [created] => 2011-06-01 15:46:55
  [email] => SimpleXMLElement Object
  (
  )

  [last_visit] => 2011-06-15 15:38:34
  [location] => SimpleXMLElement Object
  (
  )

  [nick] => 商城
  [seller_credit] => SimpleXMLElement Object
  (
  [good_num] => 0
  [level] => 0
  [score] => 0
  [total_num] => 0
  )

  [status] => normal
  [type] => C
  [uid] => a2133f8fea55225a81f2b843f609d9ec1
  [user_id] => 7144516691
  )

)
上面是哪里,我该如何用循环显示出对应的字段值啊?

作者: nixiang2012   发布时间: 2011-06-15

在PHP中可以用simplexml_load_file或者simplexml_load_string 方便地进行XML的分析,载入用print_r输出,可以看到输出了一个SimpleXMLElement Object数组,但是如果此时想把这个项赋值给一个变量或存入数据库,你会发现无法正常使用,为什么呢?原因就是他是一个SimpleXMLElement Object,并不是一个标准的普通的数组项。此时如何才能简化使用呢。

  $fileName = ‘t5.xml’;
  $xml = simplexml_load_file($fileName);
  $xml = (array)$xml;
  print_r($xml);

  //输出的结果为:
  Array
  (
  [msg_code] => 3
  [msg] => 服务器端还有数据文件需要下载,请继续调用本接口下载数据文件
  [fileInfos] => SimpleXMLElement Object
  (
  [hashAlgorithm] => 0
  [compressionFormat] => 0
  [encryptAlgorithm] => 1
  )
  )

对比一下,上面的代码仅添加了一行 $xml = (array)$xml;
此时输出的内容中,第7行,已经由SimpleXMLElement Object 变为 Array 了。
其实就这么简单,只需要在需要调用的时候前用(array)转化为常规数组即可正常调用。

作者: sibang   发布时间: 2011-06-15

我估计你是打印出来的一个变量数组,我昨天遇到一个json的对象,不知道跟你这个一不一样,

我当时也是echo $json['字段'],发现不可以,但是echo $json->字段,就OK了。

作者: by53008749   发布时间: 2011-06-15