2012-08-04 5 views
0

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 클래스의 반복 함수에 문제가 있습니까?

+4

@ 오류 억제를 사용할 때마다 새끼 고양이는 슬프다. 새끼 고양이를 생각해보십시오. –

+0

오류 ('@')를 억제해서는 안됩니다. 그렇게한다면 PHP가 당신에게 말하고자하는 것을 놓칠 수도 있습니다. – knittl

답변

0

아마도 @ 연산자로 오류를 표시하지 않았다면 말했을 것입니다.

+0

이것이 내 문제를 해결했습니다. 고마워요 @ 벤자민 – user1485518

2

뭐가 잘못 :

PHP에서
json_decode($input,true); 
0

, $this->objectToArray하지 당신이 그것을 예상대로 함수에, 그 이름의 속성에 대한 참조입니다. 당신은 개체 인스턴스와 배열과 메소드 이름을 전달해야합니다

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

PHP는 것 : 당신이 콜백 같은 개체의 방법을 사용하려는 경우, 당신은 배열을 통과해야

return array_map(array($this, 'objectToArray'), $result); 
관련 문제