2012-03-07 7 views
24

PHP 객체로 디코딩 된 JSON 데이터에서 속성을 가져 오려고합니다. 콘텐츠 개체가있는 동영상 개체를 반환하는 YouTube 데이터 API 요청 일뿐입니다. 완벽한 의미가 있습니다 -숫자 인 PHP 객체 속성 가져 오기

$object->content->5 

을하는

[content] => stdClass Object 
       (
        [5] => https://www.youtube.com/v/r4ihwfQipfo?version=3&f=videos&app=youtube_gdata 
        [1] => rtsp://v4.cache7.c.youtube.com/CiILENy73wIaGQn6pSL0waGIrxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp 
        [6] => rtsp://v6.cache3.c.youtube.com/CiILENy73wIaGQn6pSL0waGIrxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp 
       ) 

"예상치 못한 T_DNUMBER"를 발생시킵니다. 그러나 숫자 인 부동산의 가치를 얻으려면 어떻게해야합니까?

나는 이것을 알아야한다. 미리 감사드립니다.

+3

확실히 하나. –

+1

[정수와 같은 이름의 개체 속성에 액세스하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/10333016/how-to-access-object-properties-with-names-like-integers) – nawfal

+0

[This 그것을 완벽하게 설명하십시오] (https://stackoverflow.com/q/10333016/6521116) –

답변

47

이 작동합니다 :

$obj = json_decode(str, true); 

을 당신은 어떤 당신은 인덱스 다음 수, 대신 PHP 객체의 배열을 얻을 :

$object->content->{'5'}

+1

그게 아닙니다. 감사! –

+5

작동하지 않았습니다. '정의되지 않은 속성 : stdClass :: $ 5'을 (를) 발견했습니다. PHP 버전 5.5.7 사용하기 – Geo

+5

변수가 객체에 캐스트 된 배열 인 경우이 워크 플로우는 작동하지 않습니다. 자세한 설명과 예제는 다음에서 찾을 수 있습니다. http://stackoverflow.com/a/10333200/58795 –

17

또 다른 가능성은 json_decode하는 제 2 매개 변수를 사용하는 것입니다 평소와 같이 :

$obj['content'][5] 
+1

감사합니다. –

+0

많은 청소기 IMHO, 힌트 =) – Can

2

또 다른 aproach는 cas 객체를 배열로 옮긴다.

$array = (array) $object; 
$array['content'][5]; 
+1

이것은 틀립니다. '$ object' 객체를 배열에 캐스팅했을뿐입니다. '$ content' 속성은 여전히 ​​객체입니다. 또한 다음을 추가해야합니다 :'$ array [ 'content'] = (array) $ array [ 'content'];'. 그래서 JSON 인코딩/디코딩 솔루션이 더 간단합니다. 그것은 모든 자식 객체도 변환합니다. –

+0

True는 일차원 배열에서만 작동합니다. –

1

JSON 인 코드 한 다음 디코딩 기능에서 두 번째 매개 변수로 true를 전달하는 개체를 디코딩합니다. 연관 배열이 반환됩니다.

$array = json_decode(json_encode($object), true); 

이제 사용하여 새 배열

echo $array['content']['5']; 

사용할 수 있습니다 $object->content->{'5'} 것이다 하지 작업 개체가 개체에 배열을 캐스팅하여 만든 경우.

에 대한 자세한 설명

는 여기에서 찾을 수 있습니다 : PHP의 더 짜증나는 뉘앙스의 https://stackoverflow.com/a/10333200/58795