<?php
/**
* 将对象转换为相应的数组
* @author beggar 770793038@qq.com
* @param type $obj
* @return boolean
*/
function Obj2Array($obj){
if(!is_object($obj)){
return false;
}
if(count($obj) >= 1){
$result = $keys = array();
foreach($obj as $key=>$val){
isset($keys[$key]) ? $keys[$key] += 1 : $keys[$key] = 1;
if($keys[$key] == 1){
$result[$key] = Obj2Array($val);
}elseif($keys[$key] == 2){
$result[$key] = array($result[$key], Obj2Array($val));
}elseif($keys[$key] > 2){
$result[$key][] = Obj2Array($val);
}
}
return $result;
}elseif(count($obj) == 0){
return (string)iconv('utf-8', 'gbk//IGNORE', $obj);
}
}
$xml = "<?xml version='1.0' encoding='utf-8' ?>";
$xml .= '<root>';
$xml .= '<result><![CDATA[100]]></result>';
$xml .= '<message><![CDATA[获取成功]]></message>';
$xml .= '<userlist>';
$xml .= '<user>';
$xml .= '<name><![CDATA[beggar]]></name>';
$xml .= '<sex><![CDATA[男]]></sex>';
$xml .= '</user>';
$xml .= '</userlist>';
$xml .= '</root>';
$xml = iconv('gbk', 'utf-8//IGNORE', $xml);
$xmlObj = simplexml_load_string($xml);
$list = Obj2Array($xmlObj);
print_r($list);
在处理以xml作为传输数据的接口时,非常有用,节省了很多时间,省去了手动转换对应节点