代码之家  ›  专栏  ›  技术社区  ›  Ahmed

php get_class将simplexml转换为数组时出错

php
  •  1
  • Ahmed  · 技术社区  · 6 年前

    我有以下函数,它将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 回复  |  直到 6 年前
        1
  •  0
  •   Sayed Mohd Ali    6 年前

    简单的添加就是检查对象。您收到警告,因为它正在循环中运行。对于$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;
    }
    
        2
  •  0
  •   Nick    6 年前

    我想是因为你路过 $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;
    }
    

    检查这个