2013-04-10 5 views
0

JSON 파일을 변수 ($tmp)로 디코딩했습니다. var_dump($tmp)을 제공합니다PHP 및 JSON : object (stdClass)

object(stdClass)#31 (3) { 
    ["c"]=> int(2) 
    ["r"]=> int(2) 
    ["d"]=> object(stdClass)#32 (4) { 
       ["1"]=> string(2) "un" 
       ["2"]=> string(4) "deux" 
       ["3"]=> string(5) "trois" 
       ["4"]=> string(6) "quatre" 
      } 
} 

내가 그래서 $tmp->d["1"]을했지만 작동하지 않습니다 예를 들어 검색하려면 "취소"를합니다.

Fatal error: Cannot use object of type stdClass as array in File.php on line 17 
+0

중복 가능 [배열 형식의 개체를 배열로 사용할 수 없습니까?] (http://stackoverflow.com/questions/6815520/cannot-use-object-of-type-stdclass-as-array) – hakre

답변

2

json_decode이, 당신의 d 속성을 주석이 언급 한 바와 같이 객체

json_decode($json_str, true)

대신 배열로 JSON 문자열을 설정합니다 추가 paramater 소요 : 나는 다음과 같은 오류가있어 json 객체는 배열이 아닌 객체이므로 배열 표기법을 사용하여 액세스 할 수 없습니다 (오류가 있음을 알 수 있습니다)

저는 믿습니다.

$tmp->d->{'1'} 
// "un" 

그것이

+2

이것은 해결 방법. 그것은 질문에 대답하지 않습니다. 객체로 완벽하게 잘 동작하면 문자열을 배열로 변환해야하는 이유는 무엇입니까? –

+0

명백한 중복 질문에 답변하지 말 것을 요청할 수 있습니까? 이 오류 메시지에 관한 것은 Google 검색 결과를 들여다 보면 너무 많습니다 (적어도 내 취향에 맞지만 적어도 다르게 생각하지는 않을 것이라고 확신합니다). 대신 질문을 중복으로 닫으 려하지 않는 이유는 무엇입니까? ? 당신은 OP에 특별히 도움이되고 싶다면 코멘트를 통해 약간의 지침을 남길 수 있습니다. – hakre

0

PHP를 액세스하는 작업을해야하면 JSON과 variabled 사용할 수있는이 기능을 기본 기능로 json_encode 및 json_decode

$arrayOfValues = array(); 
$jsonString = json_encode($arrayOfValues); 

$arrayOfValues = json_decode($jsonString); 

있습니다.