I json解码了API的json数据,并希望将对象转换为数组。为此,我编写了一个类函数。这个功能就是
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中类内的递归函数有问题吗?
有什么问题
json_decode($input,true);
当您想使用对象的方法作为回调时,您必须传递一个数组:
array_map(array($this, 'objectToArray'), $result);
如果您没有用@
运算符抑制错误,PHP可能会告诉您这一点。
在PHP中,$this->objectToArray
是对该名称的属性的引用,而不是对预期的函数的引用。您需要传递一个带有对象实例和方法名称的数组:
return array_map(array($this, 'objectToArray'), $result);