[php] stdClass 유형의 객체를 배열로 사용할 수 없습니까?
를 사용하여 이상한 오류가 발생 json_decode()
합니다. 데이터를 올바르게 디코딩 print_r
하지만 (을 사용하여 보았습니다 ), 배열 내부의 정보에 액세스하려고하면 다음과 같은 결과가 나타납니다.
Fatal error: Cannot use object of type stdClass as array in
C:\Users\Dail\software\abs.php on line 108
나는 단지 시도했다 : $result['context']
어디서 $result
데이터를 반환 했는가json_decode()
이 배열 내부의 값을 어떻게 읽을 수 있습니까?
답변
의 두 번째 매개 변수를 사용하여 json_decode
배열을 리턴하십시오.
$result = json_decode($data, true);
답변
이 함수 json_decode()
는 기본적으로 객체를 반환합니다.
다음과 같은 데이터에 액세스 할 수 있습니다.
var_dump($result->context);
다음과 같은 식별자가있는 경우 from-date
(위의 방법을 사용할 때 하이픈으로 인해 PHP 오류가 발생 함) 다음과 같이 작성해야합니다.
var_dump($result->{'from-date'});
배열을 원하면 다음과 같이 할 수 있습니다.
$result = json_decode($json, true);
또는 객체를 배열로 캐스트하십시오.
$result = (array) json_decode($json);
답변
->
객체이므로 이를 사용하여 액세스해야 합니다.
다음에서 코드를 변경하십시오.
$result['context'];
에:
$result->context;
답변
오늘 같은 문제가 다음과 같이 해결되었습니다.
당신이 전화 json_decode($somestring)
하면 당신은 객체를 얻을 것이고 당신은 같은에 액세스해야 $object->key
하지만, u 전화 json_decode($somestring, true)
하면 당신은 사전을 얻고 다음과 같이 액세스 할 수 있습니다$array['key']
답변
true
의 두 번째 매개 변수로 사용하십시오 json_decode
. 이것은 stdObject
인스턴스 대신 json을 연관 배열로 디코딩합니다 .
$my_array = json_decode($my_json, true);
자세한 내용 은 설명서 를 참조하십시오.
답변
배열이 아니며 stdClass 유형의 객체입니다.
다음과 같이 액세스 할 수 있습니다.
echo $oResult->context;
자세한 정보는 여기에 있습니다 : PHP의 stdClass 란 무엇입니까?
답변
Php 매뉴얼에서 말한 것처럼
print_r — 변수에 대한 사람이 읽을 수있는 정보를 인쇄합니다
를 사용할 때 json_decode();
stdClass 유형의 객체를 반환 유형으로 얻습니다. 내부로 전달되는 인수 print_r()
는 배열 또는 문자열이어야합니다. 따라서 내부에 객체를 전달할 수 없습니다 print_r()
. 나는 이것을 다루는 두 가지 방법을 발견했다.
-
객체를 배열로 캐스트합니다.
이것은 다음과 같이 달성 될 수 있습니다.$a = (array)$object;
-
Object의 키에 액세스하여
앞에서 언급했듯이json_decode();
함수 를 사용할 때 stdClass의 Object를 반환합니다.->
Operator 의 도움으로 객체의 요소에 액세스 할 수 있습니다 .$value = $object->key;
하나는 객체에 중첩 배열이있는 경우 여러 키를 사용하여 하위 요소를 추출 할 수도 있습니다.
$value = $object->key1->key2->key3...;
그들의 다른 옵션은 print_r()
물론, 같은 var_dump();
과var_export();
추신 : 당신이의 두 번째 매개 변수를 설정하는 경우 또한, json_decode();
위해 true
, 그것은 자동으로 개체를 변환 할 array();
몇 가지 참조입니다 :
http://php.net/manual/en/function.print-r.php
에 http : // php.net/manual/en/function.var-dump.php
http://php.net/manual/en/function.var-export.php