PHP get_class错误将SimpleXML转换为数组

时间:2018-12-05 12:42:01

标签: php

我具有以下函数,该函数将SimpleXML对象返回到常规数组中。似乎工作正常,但是,如果我打开错误报告功能,则会收到很多警告:

Warning: get_class() expects parameter 1 to be object, string given

但是它似乎仍然以某种方式起作用。有什么想法可以使它正常运行而没有错误吗?

function convert($content){
    $data = (array)$content;

    foreach ($data as $k => $v){
        if(strpos(get_class($v),"SimpleXML")!==false){
            $data[$k] = XMLArray($v);
        }
    }

    return $data;
}

2 个答案:

答案 0 :(得分:0)

我认为是因为您传递的是$v而不是$k

function convert($content){
    $data = (array)$content;

    foreach ($data as $k ){
        if(strpos(get_class($k),"SimpleXML")!==false){
            $data[$k] = XMLArray($k);
        }
    }

    return $data;
}

选中此

答案 1 :(得分:0)

只需添加is_object检查。您收到警告,因为它正在循环运行。对于$ v的某个值,它是一个对象,并且该部分运行良好,但是对于某些值,$ v不是一个对象。在$ v不是对象的情况下,您会得到警告。

     function convert($content){
    $data = (array)$content;

    foreach ($data as $k => $v){
        if(is_object($v) && strpos(get_class($v),"SimpleXML")!==false){
            $data[$k] = XMLArray($v);
        }
    }

    return $data;
}