PHP将XML转数组过程详解

本文讲的是用PHP将XML对象转换成数组的方法,得到一个xml型的对象:

  1. $resp = $this->c->execute($req, $sessionKey);//获得xml对象
  2. $items=$resp->items;

那么读取对象的值,就用$items->item,或者$items->item->price,如此操作很不方便,不符合php操作数组的习惯。

php提供了array方法将对象转换成数组,只要把你要转换数组的对象前面加上(array)就行了。

比如将$items->item(有很多item的对象)转换成数组:

  1. foreach ($items->item as $item){
  2. $goods[]=(array)$item;
  3. }

$goods就是一个php数组了。

转换前代码如下:

  1. SimpleXMLElement Object
  2. (
  3. [cid] => 50003793
  4. [modified] => 2013-04-18 17:16:25
  5. [nick] => qq307819623
  6. [price] => 200.00
  7. [title] => Nokia N97全新行货
  8. )
  9. SimpleXMLElement Object
  10. (
  11. [cid] => 50024921
  12. [modified] => 2013-04-18 16:58:06
  13. [nick] => qq307819623
  14. [pic_url] =>pic.jpg
  15. [price] => 888888.00
  16. [title] => 刘俊仲
  17. )
  18. SimpleXMLElement Object
  19. (
  20. [cid] => 1512
  21. [modified] => 2013-04-18 16:56:46
  22. [nick] => qq307819623
  23. [pic_url] => item_pic.jpg
  24. [price] => 323232.00
  25. [title] => 二手你好
  26. ) //phpfensi.com
  27. SimpleXMLElement Object
  28. (
  29. [cid] => 50012166
  30. [modified] => 2013-04-18 15:10:07
  31. [nick] => qq307819623
  32. [pic_url] =>0-item_pic.jpg
  33. [price] => 32.00
  34. [title] => 放大率拉德斯基分拉沙德疯了似的看法拉斯法
  35. )

转换后代码如下:

  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [cid] => 50003793
  6. [modified] => 2013-04-18 17:16:25
  7. [nick] => qq307819623
  8. [price] => 200.00
  9. [title] => Nokia N97全新行货
  10. )
  11. [1] => Array
  12. (
  13. [cid] => 50024921
  14. [modified] => 2013-04-18 16:58:06
  15. [nick] => qq307819623
  16. [pic_url] => pic.jpg
  17. [price] => 888888.00
  18. [title] => 刘俊仲
  19. )
  20. [2] => Array
  21. (
  22. [cid] => 1512
  23. [modified] => 2013-04-18 16:56:46
  24. [nick] => qq307819623
  25. [pic_url] =>item_pic.jpg
  26. [price] => 323232.00
  27. [title] => 二手你好
  28. )
  29. [3] => Array
  30. (
  31. [cid] => 50012166
  32. [modified] => 2013-04-18 15:10:07
  33. [nick] => qq307819623
  34. [pic_url] => 0-item_pic.jpg
  35. [price] => 32.00
  36. [title] => 放大率拉德斯基分拉沙德疯了似的看法拉斯法
  37. )