SimpleXML提供了一套简单快速的XML操作方法,大大地提高了XML操作的效率。

  但是有时不小心也会带来不小的麻烦,看下面一段代码:

  $xml=simplexml_load_string('<root><title>title</title></root>');

  $title=$xml->title;

  echo$title;

  $xml->title='test';

  echo$title;

  猜猜第二个输出结果会是多少?是'test',而不是想像中的'title'。为什么会这样呢?原因在这里:

  echo gettype($xml->title)//object

  echo get_class($xml->title);//SimpleXMLElement

  看到了吗,$xml->title是一个SimpleXMLElement类的实例,而不是字符串。

  SimpleXMLElement应该是实现了一个类似于__tostring()的接口(有兴趣的可以去看一下PHP的源码,在"ext/simplexml/"中),才能在echo等表达式中表现类似于一个字符串。所以还有个地方需要注意:

  $_SESSION['test']=$xml->title;//保存一个SimpleXMLElement变量到SESSION中。

  $_SESSION['test']=(string)$xml->title;//字符串

  $_SESSION['test']=strval($xml->title);//这样也行。

  所以$title实际上保存的是一个到SimpleXMLElement类的一个引用,而不是字符串的副本。想要得到字符串的副本只能进行类型转换:

  $title=(string)$xml->title;//获得字符串

  $xml->title='test';

  echo$title;//输出title

最新文章

  1. 玩转JavaScript OOP[3]——彻底理解继承和原型链
  2. lob结构
  3. [MySQL Reference Manual] 7 备份和恢复
  4. (准备写)URAL1824 Ifrit Bomber 题解
  5. 删除sde用户问题
  6. Oracle instr函数与SqlServer charindex的区别
  7. Bootstrap3.0学习第十八轮(JavaScript插件——下拉菜单)
  8. TopCoder SRM 582 ColorfulBuilding
  9. 手势冲突UIPanGestureRecognizer 和UIPinchGestureRecognizer
  10. 常用的HTML标签
  11. laravel artisan 命令工具
  12. HDU 5172 GTY's gay friends 线段树
  13. php实现人员的权限管理
  14. 网络防火墙和NAT地址转换
  15. Grunt 实战
  16. Delphi (Library Path Browsing Path)
  17. javascript文件加载模式与加载方法
  18. python链接Hive
  19. JAVA-数据库之添加记录
  20. 计蒜客 31460 - Ryuji doesn't want to study - [线段树][2018ICPC徐州网络预赛H题]

热门文章

  1. Java for LeetCode 023 Merge k Sorted Lists
  2. border-box
  3. windows设置java环境变量
  4. 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
  5. 再次实操一次angular的基本语法
  6. Java Hour 57 Java Architecture
  7. C++的那些事:数据与类型
  8. BZOJ 3156: 防御准备 斜率优化DP
  9. 从维度理解dp问题
  10. Linux常用命令_(文件操作)