php 将xml对象转换成数组,看不明白function simplexml_obj2array函数,请高人解释思路?

functionsimplexml_obj2array($obj){if($objinstanceofSimpleXMLElement){$obj=(array)$obj... function simplexml_obj2array($obj){
if ($obj instanceof SimpleXMLElement) {
$obj = (array)$obj;
}

if (is_array($obj)) {
$result = $keys = array();
foreach( $obj as $key=>$value)
{
isset($keys[$key]) ? ($keys[$key] += 1) : ($keys[$key] = 1);

if( $keys[$key] == 1 )
{
$result[$key] = simplexml_obj2array($value);
}
elseif( $keys[$key] == 2 )
{
$result[$key] = array($result[$key], simplexml_obj2array($value));
}
else if( $keys[$key] > 2 )
{
$result[$key][] = simplexml_obj2array($value);
}
}
return $result;
} else {
return $obj;
}
}
$xml=simplexml_load_file("D:/phpWork/lib/books.xml");

$rss = simplexml_obj2array($xml);
展开
 我来答
百度网友167f8b5e4
2014-12-20 · 超过26用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:43.1万
展开全部
instanceof 用来检查前面的对象是否是后面这个类的实例,如果是则强制转换为数组
追问
$result = $keys = array();  那请问这个$keys数组用来干嘛的,分别=1、2、或>2三种情况是用来对应xml对象转化为数组过程中的什么情况呢?主要就是中间这块想不明白,如能回答非常感谢啊
追答
我没试验过哈,只是猜想,你可以对照数据看看是不是这么回事,$keys这个数组应该是用来判断是否有相同的键存在,当键第一出现时,直接返回该值并存储在result 中,当第二次出现时,此时把相同键的值存放在一个数组中,而大于第二出现时,和第二步一样,放在同一个键的二维数组 中,最后遍历完了,返回重新组合的数组
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式