PHP中simplexml_load_string函数使用说明

2015-01-24信息快讯网

这个问题遇到好几次了,今天翻看以前代码的时候看到,便记下来,需要的朋友可以参考下。

先用一段代码重现一下问题
乍一看,结果很让人费解:
 
<?php 
$string = <<<EOF 
<data> 
<foo><bar>hello</bar></foo> 
<foo><bar>world</bar></foo> 
</data> 
EOF; 

$data = simplexml_load_string($string); 

print_r($data); 
print_r($data->foo); 
?> 

乍一看,结果很让人费解:
 
SimpleXMLElement Object 
( 
[foo] => Array 
( 
[0] => SimpleXMLElement Object 
( 
[bar] => hello 
) 
[1] => SimpleXMLElement Object 
( 
[bar] => world 
) 
) 
) 
SimpleXMLElement Object 
( 
[bar] => hello 
) 

明明print_r显示foo是一个有两个bar元素的数组,但是最后却仅仅显示了一个bar元素!
原因其实很简单,在如上所示simplexml_load_string的结果里,foo并不是数组,而是一个迭代对象!
可以这样确认:
 
foreach ($data->foo as $v) print_r($v); 
foreach ($data->children() as $v) print_r($v); 

看来,print_r或者var_dump之类的表象并不完全可信,自己多留心吧。
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
simplehtmldom Doc api帮助文档
Notice: Trying to get property of non-object problem(PHP)解决办法
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Php Ctemplate引擎开发相关内容
JS中encodeURIComponent函数用php解码的代码
php&mysql 日期操作小记
一些需要禁用的PHP危险函数(disable_functions)
php中echo()和print()、require()和include()等易混淆函数的区别
php 无法加载mysql的module的时候的配置的解决方案引发的思考
PHP中创建空文件的代码[file_put_contents vs touch]
php empty() 检查一个变量是否为空
PHP sprintf()函数用例解析
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
php simplexmlElement操作xml的命名空间实现代码
PHP读取XML值的代码(推荐)
php xml 入门学习资料
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
php iconv() : Detected an illegal character in input string
php printf输出格式使用说明
php empty,isset,is_null判断比较(差异与异同)
使用bcompiler对PHP文件进行加密的代码
PHP isset()与empty()的使用区别详解
php中var_export与var_dump的区别分析
php visitFile()遍历指定文件夹函数
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
PHP中的string类型使用说明
PHP STRING 陷阱原理说明
PHP print类函数使用总结
PHP var_dump遍历对象属性的函数与应用代码
php下使用SimpleXML 处理XML 文件
©2014-2024 dbsqp.com