我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中的类中是否存在recurive函数的问题?
答案 0 :(得分:2)
出了什么问题:
json_decode($input,true);
答案 1 :(得分:0)
在PHP中,$this->objectToArray
是对该名称的属性的引用,而不是对您所期望的函数的引用。您需要使用对象实例和方法名称传递数组:
return array_map(array($this, 'objectToArray'), $result);
答案 2 :(得分:0)
如果要将对象的方法用作回调,则必须传递数组:
array_map(array($this, 'objectToArray'), $result);
PHP可能会告诉您,如果您没有使用@
运算符来抑制错误。