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