0

我对 API 的 json 数据进行了 json 解码,并希望将对象转换为 array 。我写了一个类函数来做到这一点。这个功能是

public function objectToArray($result) {
    if (is_object($result)) {
        $result = get_object_vars($result);
    }
    if (is_array($result)) {
        return array_map( @$this->objectToArray, $result);
    }
    else {
        // Return array
        return $result;    
    }
} 

所以上面的代码不起作用。它只转换了“第一层”对象,而不是对象数组的对象(我说的是嵌套数组和对象)。但是,当我在类外声明函数 objectToArray 并将 array_map 的参数更改为“objectToArry”时,它突然开始工作。怎么会 ?PHP 类中的递归函数是否存在问题?

4

3 回答 3

2

有什么问题:

json_decode($input,true);
于 2012-08-04T11:43:33.260 回答
0

在 PHP 中,$this->objectToArray是对该名称的属性的引用,而不是对您期望的函数的引用。您需要传递一个带有对象实例和方法名称的数组:

return array_map(array($this, 'objectToArray'), $result);
于 2012-08-04T11:44:38.420 回答
0

当您想使用对象的方法作为回调时,您必须传递一个数组:

array_map(array($this, 'objectToArray'), $result);

如果您没有使用@操作员抑制错误,PHP 可能会告诉您。

于 2012-08-04T11:47:11.973 回答