2
回答
淘宝API 获取商品详细信息后,如何将获取的SimpleXMLElement 对象变成数组?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

淘宝API 获取商品详细信息后,会得到SimpleXMLElement 对象,如何将这个对象转换成数组呢?


$resp = $c->execute($req, $sessionKey);

需要递归转换哦,直接的

$resp = (array) $resp;

没有将里面层的变成数量。

不知道我表述的清楚不,


我的意思是想让获取淘宝信息后,转换成数组更好操作一些。当然其实SimpleXMLElement 也很好操作,只是我想要数组形式。


<无标签>
举报
燧人氏
发帖于5年前 2回/2K+阅
共有2个答案 最后回答: 5年前
你随便找个XML转换数组的函数或者类就可以!百度一下,很多的。
--- 共有 1 条评论 ---
燧人氏找了,都是只有第一层数组转了,第二层就没转了。 5年前 回复

那你试试这个!我也是用这个抓取淘宝数据的,都用了N长时间了。

// XML转换成数组
    private function simplexml_obj2array($obj)
    {
        if( count($obj) >= 1 )
        {
            $result = $keys = array();

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

                if( $keys[$key] == 1 )
                {
                    $result[$key] = $this->simplexml_obj2array($value);
                }
                elseif( $keys[$key] == 2 )
                {
                    $result[$key] = array($result[$key], $this->simplexml_obj2array($value));
                }
                else if( $keys[$key] > 2 )
                {
                    $result[$key][] = $this->simplexml_obj2array($value);
                }
            }
            return $result;
        }
        else if( count($obj) == 0 )
        {
            return (string)$obj;
        }
    }


--- 共有 1 条评论 ---
_Aaron_谢谢~~ 5年前 回复
顶部